Insérer des données dans un tableau sous certaines conditions

varchamb

XLDnaute Nouveau
Bonjour,
J'aimerai insérer des lignes dans des tableaux en fonction de certains critères. J'ai commencé à écrire un code avec les explications à côté et des lignes manquantes ou des [...] lorsque je ne sais pas écrire le code.

Merci d'avance à ceux qui pourront m'aider.

Code:
Sub Test()
FinTab1 = Feuil1.Range("C1000").End(xlUp).Row         ' nomme la fin de mon tableau en Feuil 1
FinTab2 = Feuil2.Range("C1000").End(xlUp).Row         ' nomme la fin de mon tableau en Feuil 2
FinTab3 = Feuil3.Range("C1000").End(xlUp).Row         ' nomme la fin de mon tableau en Feuil 3
For i = 2 To FinTab1
If Feuil1.Range("L" & i) = "" Then                    'si cellule Li Feuil1 est vide, alors
For j = 2 To FinTab2
If Feuil1.Range("C" & i) = Feuil2.Range("C" & j) Then 'si cellule Ci Feuil1 = Cj Feuil2, alors
Feuil1.Range("A:AD" & i).Copy                         'copie la ligne i de A à AD
                                                      'et colle la à la place de la ligne en Feuil2
Next
End If
Feuil1.Range("A:AD" & i).Copy [...]                   'Autrement (si cellule C2 Feuil1 ne trouve pas d'équivalent dans la Feuil2), copier la ligne et la mettre à la fin du tableau Feuil2
End If
Next
For i = 2 To FinTab1
If Feuil1.Range("L" & i) = "*" Then                   'si cellule L2 Feuil1 est pleine, alors
For j = 2 To FinTab3
If Feuil1.Range("C" & i) = Feuil3.Range("C" & j) Then 'si cellule C2 Feuil1 = C2 Feuil3, alors
Feuil1.Range("A:AD" & i).Copy                         'copie la ligne i de A à AD
                                                      'et colle la à la place de la ligne en Feuil3
Next
End If
Feuil1.Range("A:AD" & i).Copy [...]                   'Autrement (si cellule C2 Feuil1 ne trouve pas d'équivalent dans la Feuil3), copier la ligne et la mettre à la fin du tableau Feuil3
End If
Next
End Sub
 

Jacou

XLDnaute Impliqué
Re : Insérer des données dans un tableau sous certaines conditions

Bonjour varchamb, bonjour le forum,

dans un premier temps je propose de structurer ton début de code de la manière suivante :
Code:
Sub Test()
FinTab1 = Feuil1.Range("C1000").End(xlUp).Row                       ' nomme la fin de mon tableau en Feuil 1
FinTab2 = Feuil2.Range("C1000").End(xlUp).Row                       ' nomme la fin de mon tableau en Feuil 2
FinTab3 = Feuil3.Range("C1000").End(xlUp).Row                       ' nomme la fin de mon tableau en Feuil 3
For i = 2 To FinTab1
    If Feuil1.Range("L" & i) = "" Then                              'si cellule Li Feuil1 est vide, alors
        Tag = 0
        For j = 2 To FinTab2
               If Feuil1.Range("C" & i) = Feuil2.Range("C" & j) Then 'si cellule Ci Feuil1 = Cj Feuil2, alors
                    Feuil1. Range("A" & i).EntireRow.Copy           'copie la ligne i de A à AD
                                                            'et colle la à la place de la ligne en Feuil2
                    Tag = 1
               End If
          Next
          If Tag = 0 then
               Feuil1.Range("A:AD" & i).Copy [...]     'Autrement (si cellule C2 Feuil1 ne trouve pas
                                                       ' d'équivalent dans la Feuil2),
                                                       'copier la ligne et la mettre à la fin du tableau Feuil2
          End If
     End If
Next
For i = 2 To FinTab1
     If Feuil1.Range("L" & i) = "*" Then               'si cellule L2 Feuil1 est pleine, alors
          Tag = 0
          For j = 2 To FinTab3
               If Feuil1.Range("C" & i) = Feuil3.Range("C" & j) Then  'si cellule C2 Feuil1 = C2 Feuil3, alors
                    Feuil1.Range("A" & i).EntireRow.Copy  'copie la ligne i de A à AD
                                                          'et colle la à la place de la ligne en Feuil3
                     Tag = 1
               End If
          Next
          If Tag = 0 then
               Feuil1.Range("A:AD" & i).Copy [...]        'Autrement (si cellule C2 Feuil1 ne trouve pas
                                                          'd'équivalent dans la Feuil3),
                                                          'copier la ligne et la mettre à la fin du tableau Feuil3
          End If
     End If
Next
End Sub
Ce type de présentation permet de mieux visualiser les différents niveaux des boucles "For" ou dans les "If".
j'ai également ajouter un tag qui permet de ne pas se mélanger dans les différents niveaux.
Bonne journée
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 765
Messages
2 091 892
Membres
105 084
dernier inscrit
lca.pertus