Problème boucle qui s'arrête à la première ligne

Bonjour le Forum,

Je souhaiterais réaliser une boucle qui me permet de copier-coller des éléments dans d'autres feuilles.

Plus exactement, je souhaiterais que de la ligne 2 à la dernière ligne de mon tableau, la macro copie-colle des champs de données en fonction d'une colonne.

Par exemple, pour Marseille, je souhaite que si la colonne L est non vide, c'est-à-dire la 12ème colonne, alors copier coller certains champs dans la feuille Marseille.

J'ai bien défini MultiRange dans mon doc, mais ne vous l'ai pas transmis pour alléger le code. En effet mon problème porte sur la boucle, qui s'arrête à la première ligne :

Dim Lig As Long 'Lig correspond au numéro de Ligne
Dim DerniereLigne As Integer

'Il s'agit d'un tableau avec entêtes, donc la première ligne est la n°2
Lig = 2

'Définition de la dernière ligne selon la première colonne de mon tableau
DerniereLigne = Worksheets("Source").Cells(Rows.Count, 1).End(xlUp).Row

For Lig = 2 To DerniereLigne

If Worksheets("Source").Cells(Lig, 12).Value <> "" Then
MultipleRangeMarseille.Copy
Sheets("Marseille").Range("B4").PasteSpecial xlPasteValues
Sheets("Marseille").Range("B4").PasteSpecial xlPasteFormats

ElseIf Worksheets("Source").Cells(Lig, 24).Value <> "" Then
MultipleRangeLille.Copy
Sheets("Lille").Range("B4").PasteSpecial xlPasteValues
Sheets("Lille").Range("B4").PasteSpecial xlPasteFormats

ElseIf Worksheets("Source").Cells(Lig, 38).Value <> "" Then
MultipleRangeParis.Copy
Sheets("Paris").Range("B4").PasteSpecial xlPasteValues
Sheets("Paris").Range("B4").PasteSpecial xlPasteFormats
End If

Lig = Lig + 1

Next Lig

Je ne sais pas si j'ai bien reformulé mon problème,

J'utilise souvent la Vba pour autant, il s'agit de ma première boucle...

Merci beaucoup pour votre aide !

Bonjour,

Il est préférable de joindre un fichier

Ceci dit, comme ça au nez,
est-ce que dans votre feuille "Source" vous avez la colonne A qui est remplie de valeurs ?

A+

Bonjour BrunoM45,

Le voici

10modele-bis.xlsm (49.82 Ko)

Bonsoir mm_b

Voici le fichier en retour avec le code modifié

N'oublie pas

Merci beaucoup pour ton aide, ton code m'aide grandement !

Cependant comment faire pour qu'une ligne, qui remplie chaque condition du If, s'ajoute aux feuilles correspondantes?

Par exemple, le Projet O est à la fois inscrit pour Paris et Marseille mais ne s'ajoute que à la feuille Paris.

Re,

Dans ce cas il ne faut pas mettre de "ElseIF" comme c'était le cas dans le code initial

Il faut mettre 3 If... End If qui se suivent

    'Pour le département
    If Worksheets("Source").Cells(Lig, 12).Value <> "" Then
      ' Vérifier si ligne vierge existe sinon en ajouter une
      Set LstObj = Sheets("Paris").ListObjects(1)
      nLig = LigVierge(LstObj)
      ' Copier les valeursd
      MultipleRangeMarseille.Copy
      ' Les coller dans le tableau
      With LstObj.Range(nLig, 1)
        .PasteSpecial Paste:=xlPasteValues
        .PasteSpecial Paste:=xlPasteFormats
      End With
    End If
    If Worksheets("Source").Cells(Lig, 24).Value <> "" Then
      ' Vérifier si ligne vierge existe sinon en ajouter une
      Set LstObj = Sheets("Marseille").ListObjects(1)
      nLig = LigVierge(LstObj)
      ' Copier les valeursd
      MultipleRangeMarseille.Copy
      ' Les coller dans le tableau
      With LstObj.Range(nLig, 1)
        .PasteSpecial Paste:=xlPasteValues
        .PasteSpecial Paste:=xlPasteFormats
      End With
    End If
    If Worksheets("Source").Cells(Lig, 38).Value <> "" Then
      ' Vérifier si ligne vierge existe sinon en ajouter une
      Set LstObj = Sheets("Lille").ListObjects(1)
      nLig = LigVierge(LstObj)
      ' Copier les valeursd
      MultipleRangeMarseille.Copy
      ' Les coller dans le tableau
      With LstObj.Range(nLig, 1)
        .PasteSpecial Paste:=xlPasteValues
        .PasteSpecial Paste:=xlPasteFormats
      End With
    End If

A+

Rechercher des sujets similaires à "probleme boucle qui arrete premiere ligne"