Recopie de colonne dans onglet différent sans cellules vides

-1

Bonjour à tous,

D'une base de données sur un onglet, je souhaite en recopier une colonne entière sur un deuxième onglet mais sans les cellules vides que pourrait contenir la colonne de la base de données.

Problème simple mais pour le moment je n'ai pas trouvé de solution.

Merci de m'aider !

Posté le 19 mars 2015, 11:15
par FlorianB
Répondre
0

Sans utiliser de macro, tu peux utiliser ce site pour supprimer les lignes vides : http://textmechanic.com/Remove-Empty-Lines.html

Sinon, tu peux utiliser une macro comme expliqué ici :

Sub Main()
    Dim i As Long
    For i = 11 To 251
        If Not IsEmpty(Range("M" & i)) Then _
            Range("B" & i) = Range("M" & i)
        If Not IsEmpty(Range("N" & i)) Then _
            Range("C" & i) = Range("N" & i)
    Next i
End Sub
Vince Posté le 23 mars 2015, 22:14
par Vince
1

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...

azerty11235 Posté le 16 avril 2015, 13:32
par azerty11235
0

Peut-être un peu tard pour répondre mais un filtre avancé avec copie vers un autre emplacement répond à ta demande.

Ca s'utilise avec une plage de départ, une zone de critère et une zone d'arrivée. (Menu Données/Trier et filtrer/Avancé

ouisansdoute Posté le 1 juin 2015, 08:21
par ouisansdoute

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :