Microsoft 365 Supprimer les lignes vides d'une variable tableau

Rhyukane

XLDnaute Nouveau
Bonjour à tous,

J'ai un fichier structuré avec des colonnes précises.
Chaque jour je dois y importer par macro des données externes. Cependant, des colonnes peuvent régulièrement être ajoutée dans ces imports qui ne m'intéressent pas. Mais cela décale le numéro des colonnes.
Pour éviter tout problème, je cherche donc dans un premier temps le numéro de colonne via le nom de celle-ci (x1,x2,...).

Ensuite je copie dans une variable tableau les différentes lignes en ne prenant que les colonnes qui m'intéressent sous réserve que le numéro du dossier de la ligne n'existe pas déjà dans mon tableau.

Jusque là je n'ai aucun soucis. Cependant quand une partie des lignes existe déjà dans mon tableau, la variable tableau ne les copie pas mais me met des lignes vides à la place.

Du coup je ne sais pas malgré de nombreuses recherches comment soit supprimer les lignes vides de la variable tableau (j'ai vu des posts mais honnêtement je n'arrive pas à comprendre) ou faire en sorte que la variable tableau ne créé pas de ligne vide pour les numéros de dossiers déjà existants.

Je vous joints la partie de code qui concerne ces éléments. Je ne peux pas joindre de fichier malheureusement pour des raisons de confidentialité.

Merci par avance pour votre aide.

Cordialement
Rhyukane

VB:
For i = 0 To lastRow 'lance la boucle de la ligne 0 de la variable tableau à la dernière ligne
If TS.ListColumns("Numéro de dossier").DataBodyRange.Find(Cells(i + 2, x2).Value) Is Nothing Then 'vérifie si le numéro de dossier n'existe pas déjà dans l'onglet de destination avant de lancer la boucle pour chaque ligne
tableau(i, 0) = .Cells(i + 2, x1).Value
tableau(i, 1) = .Cells(i + 2, x2).Value
tableau(i, 2) = CDate(.Cells(i + 2, x3).Value)
tableau(i, 3) = .Cells(i + 2, x4).Value
tableau(i, 4) = .Cells(i + 2, x5).Value
tableau(i, 5) = .Cells(i + 2, x6).Value
tableau(i, 6) = .Cells(i + 2, x7).Value
tableau(i, 7) = .Cells(i + 2, x8).Value
tableau(i, 8) = .Cells(i + 2, x9).Value
tableau(i, 9) = .Cells(i + 2, x10).Value
tableau(i, 10) = CDate(.Cells(i + 2, x11).Value)
tableau(i, 11) = .Cells(i + 2, x12).Value
tableau(i, 12) = .Cells(i + 2, x13).Value
tableau(i, 13) = .Cells(i + 2, x14).Value
tableau(i, 14) = .Cells(i + 2, x15).Value
tableau(i, 15) = .Cells(i + 2, x16).Value
tableau(i, 16) = .Cells(i + 2, x17).Value
tableau(i, 17) = .Cells(i + 2, x18).Value
tableau(i, 18) = .Cells(i + 2, x19).Value
tableau(i, 19) = .Cells(i + 2, x20).Value
tableau(i, 20) = .Cells(i + 2, x21).Value
tableau(i, 21) = .Cells(i + 2, x22).Value
tableau(i, 22) = .Cells(i + 2, x23).Value
tableau(i, 23) = .Cells(i + 2, x24).Value
If x25 <> "" Then
tableau(i, 24) = .Cells(i + 2, x25).Value
End If
tableau(i, 25) = .Cells(i + 2, x26).Value
tableau(i, 26) = .Cells(i + 2, x27).Value
tableau(i, 27) = .Cells(i + 2, x28).Value
End If 'fin de la condition vérifiant si le numéro de dossier existe déjà
Next i 'passe la boucle à la ligne suivante

OD.Range("A" & TS.ListRows.Count + 2).Resize(UBound(tableau, 1) - (LBound(tableau, 1)), UBound(tableau, 2)) = tableau 'copie la variable tableau dans la tableau structuré de l'onglet OD
TS.Resize TS.Range.Resize(OD.Cells(Rows.Count, 1).End(xlUp).Row, TS.ListColumns.Count) 'redimensionne de tableau structuré de destination avec les nouvelles lignes ajoutées
 

Discussions similaires

Réponses
5
Affichages
203
Réponses
0
Affichages
83
Réponses
6
Affichages
202
Réponses
5
Affichages
125

Statistiques des forums

Discussions
311 720
Messages
2 081 924
Membres
101 841
dernier inscrit
ferid87