Une autre solution, qui fonctionne uniquement avec des formules et qui se réadaptera à chaque fois, mais qui est plus compliquée et qui demande plus de temps à programmer, est la suivante:
1 : Avoir une colonne libre à gauche de celle contenant les données, et qui doit nécéssairement y être accollée. Il faudra aussi deux autres colonnes de libre sur le tableur, mais leur emplacement reste libre. Enfin, il doit y avoir une cellule vide au-dessus des deux colonne de calcul masquables (étapes 2 et 3), soit celles qui ne servent qu'au calcul du résultat final.
2 : Dans la colonne de gauche, à la hauteure la première donnée, (ici A2), mettre la formule suivante =SI(ESTVIDE(B2);A1;A1+1), et la prolonger sur toute l'étendue (verticale) de la base de données. Elle servira à donner une adresse à chaque donnée. Il n'est pas nécéssaire de s'inquiéter des doublons que cette formule génère, il ne gêneront pas. Cette colonne peut être masquée, mais elle doit être juste à gauche de celle des données.
3 : Dans une nouvelle colonne, mettre la formule =SI(C1<MAX(A:A);C1+1;"") au niveau de la première ligne de données (ici C2). Cette formule va condenser les adresses crées par l'étape 1 et éliminer toutes les cellules vides, sans créer de nouvelles adresses. Cette colonne peut également être masquée.
4 : Enfin, dans une dernière colonne, mettre la formule =RECHERCHEV(C2;A:B;2;FAUX), qui va retranscrire toutes les données sans laisser de cellules vides. Elle peut être placée n'importe où, tant que ses paramètres sont respectés.
Premier paramètre : selectionner la première cellule de l'étape 3 (ici C2); deuxième : selectioner la colonne de l'étape 2 et celle des données ensemble (ici A et B, mais on peut se contenter d'une plage fermée si on veut) ; troisième : on veut les informations contenues dans la deuxième colonne (ici B, les données) ; quatrième : on veut une correspondance exacte (donc FAUX).
Si on veut éviter l'apparitin de #N/A dans toutes les cases où il n'y a pas de données, on peut remplacer cette dernière formule par =SI(ESTERREUR(RECHERCHEV(C2;A:B;2;FAUX));"";RECHERCHEV(C2;A:B;2;FAUX)).
J'èspère que ça pourra vous aider.
Addendum : si les cellules vides de la colonne de données contiennent une formule qui ne provoque pas d'affichage, ou bien une erreur (#N/A, #DIV/0), la formule de l'étape 2 ne fonctionnera pas. Il faut alors remplacer la fonction "ESTERREUR" par la fonction "EST?????" adaptée à votre type de donnée. exemple : ESTNUM, ESTTEXTE, etc...