Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Array remplissant feuille excel, comment supprimer les lignes vides ?

  • Initiateur de la discussion Initiateur de la discussion fb62840
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fb62840

XLDnaute Impliqué
Bonjour à toutes et à tous,

Je collecte dans une array l'ensemble des valeurs (en ligne) contenu dans une feuille excel "base" (qui contient l'ensemble des enregistrements).
Sur la feuille base, les données sont saisies en colonne et le nombre de colonnes complétées est variable.

La macro dans le classeur joint fait ça :
- elle crée un nouveau classeur, nomme les feuilles et les remplie avec le contenu de l'array, la position des différents éléments de l'array est définie dans la macro, qu'il y ait une donnée dans la cellule ou que la cellule soit vide.

Cela a pour résultat de produire des feuilles avec parfois des lignes vides dont je n'ai pas besoin.

Pourriez vous m'aider à supprimer les lignes vides (seulement celles qui ont une correspondance dans l'array) ?

Merci beaucoup.
 

Pièces jointes

Re : Array remplissant feuille excel, comment supprimer les lignes vides ?

bonjour

à essayer, j'ai ajouté une condition pour réaliser la copie

Code:
Sub test()
Dim Tablo, i As Long, Wkb As Workbook
    Tablo = ThisWorkbook.Sheets("Base").[A1].CurrentRegion.Value
    Set Wkb = Workbooks.Add
    For i = Wkb.Sheets.Count To 2 Step -1
        Application.DisplayAlerts = False
        Wkb.Sheets(i).Delete
        Application.DisplayAlerts = True
    Next i
    For i = 2 To UBound(Tablo, 1)
        With Wkb.Sheets(i - 1)
        If Tablo(i, 1) <> "" Then
            .Name = Tablo(i, 1)
            .[G1].Value = Tablo(i, 1)
            .[G2].Value = Tablo(i, 2)
            .[G3].Value = Tablo(i, 3)
            .[G4].Value = Tablo(i, 4)
            .[G5].Value = Tablo(i, 5)
            .[G6].Value = Tablo(i, 6)
            .[G7].Value = Tablo(i, 7)
            .[G8].Value = Tablo(i, 8)
            .[C1].Value = Tablo(i, 9)
            .[C2].Value = Tablo(i, 10)
            .[B11].Value = Tablo(i, 11)
            .[B12].Value = Tablo(i, 12)
            .[B13].Value = Tablo(i, 13)
            .[D13].Value = Tablo(i, 14)
            .[D14].Value = Tablo(i, 15)
            .[D15].Value = Tablo(i, 16)
            .[D16].Value = Tablo(i, 17)
            .[D19].Value = Tablo(i, 18)
            .[D20].Value = Tablo(i, 19)
            .[D21].Value = Tablo(i, 20)
            .[D22].Value = Tablo(i, 21)
            .[D24].Value = Tablo(i, 22)
            .[D25].Value = Tablo(i, 23)
            .[D26].Value = Tablo(i, 24)
            .[D27].Value = Tablo(i, 25)
            .[D31].Value = Tablo(i, 26)
            .[D32].Value = Tablo(i, 27)
            .[D33].Value = Tablo(i, 28)
            .[D34].Value = Tablo(i, 29)
            .[D37].Value = Tablo(i, 30)
            .[D38].Value = Tablo(i, 31)
            .[D39].Value = Tablo(i, 32)
            .[D40].Value = Tablo(i, 33)
            .[D44].Value = Tablo(i, 34)
            .[D45].Value = Tablo(i, 35)
            .[D46].Value = Tablo(i, 36)
            .[D47].Value = Tablo(i, 37)
            .[D48].Value = Tablo(i, 38)
            .[D51].Value = Tablo(i, 39)
            .[D52].Value = Tablo(i, 40)
            .[D53].Value = Tablo(i, 41)
            .[D54].Value = Tablo(i, 42)
            .[D55].Value = Tablo(i, 43)
            .[D58].Value = Tablo(i, 44)
            .[D59].Value = Tablo(i, 45)
            .[D60].Value = Tablo(i, 46)
            .[D61].Value = Tablo(i, 47)
            .[D62].Value = Tablo(i, 48)
            .[D65].Value = Tablo(i, 49)
            .[D66].Value = Tablo(i, 50)
            .[D67].Value = Tablo(i, 51)
            .[D68].Value = Tablo(i, 52)
            .[D69].Value = Tablo(i, 53)
            .[D72].Value = Tablo(i, 54)
            .[D73].Value = Tablo(i, 55)
            .[D74].Value = Tablo(i, 56)
            .[D75].Value = Tablo(i, 57)
            .[D76].Value = Tablo(i, 58)
            .[B78].Value = Tablo(i, 59)
            .[B79].Value = Tablo(i, 60)
            .[B80].Value = Tablo(i, 61)
            .[B81].Value = Tablo(i, 62)
        End If
        End With
        If i < UBound(Tablo, 1) Then Wkb.Sheets.Add After:=Wkb.Sheets(Wkb.Sheets.Count)
    Next i
End Sub
 
Re : Array remplissant feuille excel, comment supprimer les lignes vides ?

Bonjour

merci de supprimer ton classeur et d'en remettre un avec des données ANONYMISEES. Ces personnes n'ont pas nécessairement envie que leur adresse figure sur un forum public...
 
Re : Array remplissant feuille excel, comment supprimer les lignes vides ?

Bonjour,

Merci pour cette réponse rapide.
Je viens de tester, malheureusement cela ne marche pas, les lignes vides sont toujours là.

Cordialement
 
Re : Array remplissant feuille excel, comment supprimer les lignes vides ?

Bonjour,

Merci pour cette vigilance.

Toutes les infos présentes dans le fichiers sont fictives.
Toute ressemblance... serait véritablement involontaire.

Cordialement
 
Re : Array remplissant feuille excel, comment supprimer les lignes vides ?

remet ton fichier avec en feuille Base ce que tu as (ça c'est déjà fait) et en feuille2 ou autre ce que tu voudrais avoir après que la macro ait fait son traitement
à+
 
Re : Array remplissant feuille excel, comment supprimer les lignes vides ?

Bonjour,

Voici en pièce jointe :
premier onglet : la base
2nd : le résultat produit par la macro
3ème : le résultat attendu (une mise en forme ultérieure sera appliquée afin d'obtenir une présentation acceptable)

Merci pour votre aide
 

Pièces jointes

Re : Array remplissant feuille excel, comment supprimer les lignes vides ?

Comme c'est un peu longuet à corriger continue selon le principe suivant :

Code:
        If Tablo(i, 1) <> "" Then
            .Name = Tablo(i, 1)
            
            
            b = 1
                For a = 1 To 8
                    If Tablo(1, b) <> "" Then .Range("G" & a).Value = Tablo(1, b): a = a + 1: b = b + 1
                Next a
                For a = 1 To 2
                    If Tablo(1, b) <> "" Then .Range("C" & a).Value = Tablo(1, b): a = a + 1: b = b + 1
                Next a
                For a = 11 To 13
                    If Tablo(1, b) <> "" Then .Range("B" & a).Value = Tablo(1, b): a = a + 1: b = b + 1
                Next a
                For a = 13 To 16
                    If Tablo(1, b) <> "" Then .Range("D" & a).Value = Tablo(1, b): a = a + 1: b = b + 1
                Next a
 
Re : Array remplissant feuille excel, comment supprimer les lignes vides ?

Ok, je vais faire ça et je reviens pour indiquer si cela fonctionne comme attendu.

En tout cas, un grand merci pour le temps que vous m'avez consacré.
 
Re : Array remplissant feuille excel, comment supprimer les lignes vides ?

Correction :
For a = 1 To 8
If Tablo(1, b) <> "" Then .Range("G" & a).Value = Tablo(1, b): a = a + 1
b = b + 1
next a

sinon tu n'incrémentes b que lorsque tablo(1,b) est non vide
 
Re : Array remplissant feuille excel, comment supprimer les lignes vides ?

Bonjour,

Il doit y avoir quelque chose qui cloche car en modifiant le code pour y ajouter les règles de traitement sur les lignes, les informations attendues ne se placent pas au bon endroit. Et, lorsque l'on est en présence d'un vide "" alors il reporte l'intitulé de colonne de la base dans la cellule alors qu'elle devrait rester vide.

En pièce-jointe le fichier avec les lignes For ajoutées.

Cordialement

Correction :
For a = 1 To 8
If Tablo(1, b) <> "" Then .Range("G" & a).Value = Tablo(1, b): a = a + 1
b = b + 1
next a

sinon tu n'incrémentes b que lorsque tablo(1,b) est non vide
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…