VBA - Boucle avec for - Elle s’arrête à la ligne 15...... po

Bonjour à tous,

Je viens vers vous car j'ai un problème avec une boucle de recherche. (elle s’arrête à la ligne 15... )

Le but est de comparer 3 éléments de 2 feuilles excell.

Une fois les 3 conditions ok => Copier certaines cellules du fichier 1 dans le fichier B

Le code:

ub Bouton2_Clic()

'variables lignes correspondantes

Dim ISuividebut As Integer

Dim ISuivifin As Integer

Dim IZQSCdebut As Integer

Dim IZQSCfin As Integer

'Sheets("SUIVI_FAI_A350-1000").Unprotect

'Activation feuille SUIVI_FAI_A350-1000

Worksheets("SUIVI_FAI_A350-1000").Activate

'recherche dernière line de l'extract SUIVI_FAI_A350-1000

ISuivifin = Worksheets("SUIVI_FAI_A350-1000").Range("A3").End(xlDown).Row

'Activation feuille MAJ_ZQSC

Worksheets("MAJ_ZQSC").Activate

'recherche dernière line de l'extract MAJ_ZQSC

IZQSCfin = Worksheets("MAJ_ZQSC").Range("A2").End(xlDown).Row

'boucle de recherche

For ISuividebut = 3 To ISuivifin

For IZQSCdebut = 2 To IZQSCfin

'Recherche du PN suivi dans ZQSC

If Worksheets("SUIVI_FAI_A350-1000").Range("A" & ISuividebut) = Worksheets("MAJ_ZQSC").Range("A" & IZQSCdebut) Then

'Recherche de l'indice suivi dans ZQSC

ElseIf Worksheets("SUIVI_FAI_A350-1000").Range("C" & ISuividebut) = Worksheets("MAJ_ZQSC").Range("G" & IZQSCdebut) Then

'Recherche DU FOURNISSEUR suivi dans ZQSC

ElseIf Worksheets("SUIVI_FAI_A350-1000").Range("M" & ISuividebut) = Worksheets("MAJ_ZQSC").Range("D" & IZQSCdebut) Then

'Si vrai ecriture des infos

Worksheets("SUIVI_FAI_A350-1000").Range("N" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("B" & IZQSCdebut).Value

Worksheets("SUIVI_FAI_A350-1000").Range("E" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("H" & IZQSCdebut).Value

Worksheets("SUIVI_FAI_A350-1000").Range("O" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("F" & IZQSCdebut).Value

Worksheets("SUIVI_FAI_A350-1000").Range("F" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("I" & IZQSCdebut).Value

Worksheets("SUIVI_FAI_A350-1000").Range("G" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("J" & IZQSCdebut).Value

Worksheets("SUIVI_FAI_A350-1000").Range("L" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("K" & IZQSCdebut).Value

Worksheets("SUIVI_FAI_A350-1000").Range("AI" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("M" & IZQSCdebut).Value

Worksheets("SUIVI_FAI_A350-1000").Range("D" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("R" & IZQSCdebut).Value

Worksheets("SUIVI_FAI_A350-1000").Range("P" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("S" & IZQSCdebut).Value

Exit For

'Next IZQSCdebut

'End If

'Else

'Next IZQSCdebut

'End If

'Else

'Next

End If

Next IZQSCdebut

Next

End Sub

En espérant que vous puissiez m'aider..

Je reste disponible pour toutes vos interrogations

Cordialement

Anthonyd

Bonjour,

proposition de correction à tester

sub Bouton2_Clic()

'variables lignes correspondantes
Dim ISuividebut As Integer
Dim ISuivifin As Integer
Dim IZQSCdebut As Integer
Dim IZQSCfin As Integer

'Sheets("SUIVI_FAI_A350-1000").Unprotect

'Activation feuille SUIVI_FAI_A350-1000
Worksheets("SUIVI_FAI_A350-1000").Activate

'recherche dernière line de l'extract SUIVI_FAI_A350-1000
ISuivifin = Worksheets("SUIVI_FAI_A350-1000").Range("A3").End(xlDown).Row

'Activation feuille MAJ_ZQSC
Worksheets("MAJ_ZQSC").Activate

'recherche dernière line de l'extract MAJ_ZQSC
IZQSCfin = Worksheets("MAJ_ZQSC").Range("A2").End(xlDown).Row

'boucle de recherche
For ISuividebut = 3 To ISuivifin
For IZQSCdebut = 2 To IZQSCfin

'Recherche du PN suivi dans ZQSC
If Worksheets("SUIVI_FAI_A350-1000").Range("A" & ISuividebut) = Worksheets("MAJ_ZQSC").Range("A" & IZQSCdebut) Then

'Recherche de l'indice suivi dans ZQSC
if Worksheets("SUIVI_FAI_A350-1000").Range("C" & ISuividebut) = Worksheets("MAJ_ZQSC").Range("G" & IZQSCdebut) Then

'Recherche DU FOURNISSEUR suivi dans ZQSC
If Worksheets("SUIVI_FAI_A350-1000").Range("M" & ISuividebut) = Worksheets("MAJ_ZQSC").Range("D" & IZQSCdebut) Then

'Si vrai ecriture des infos
Worksheets("SUIVI_FAI_A350-1000").Range("N" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("B" & IZQSCdebut).Value
Worksheets("SUIVI_FAI_A350-1000").Range("E" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("H" & IZQSCdebut).Value
Worksheets("SUIVI_FAI_A350-1000").Range("O" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("F" & IZQSCdebut).Value
Worksheets("SUIVI_FAI_A350-1000").Range("F" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("I" & IZQSCdebut).Value
Worksheets("SUIVI_FAI_A350-1000").Range("G" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("J" & IZQSCdebut).Value
Worksheets("SUIVI_FAI_A350-1000").Range("L" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("K" & IZQSCdebut).Value
Worksheets("SUIVI_FAI_A350-1000").Range("AI" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("M" & IZQSCdebut).Value
Worksheets("SUIVI_FAI_A350-1000").Range("D" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("R" & IZQSCdebut).Value
Worksheets("SUIVI_FAI_A350-1000").Range("P" & ISuividebut).Value = Worksheets("MAJ_ZQSC").Range("S" & IZQSCdebut).Value

exit for
end if
end if
endif

Next IZQSCdebut
Next  ISuividebut
End Sub

ça fonctionne parfaitement !!!

Merci beaucoup, ça fait 2 jours que je suis dessus..

Qu'avez vous changé?

Merci beaucoup

Anthony D

bonjour,

j'ai remplacé les elseif par des if et j'ai remis de l'ordre dans les end if et les next

Rechercher des sujets similaires à "vba boucle arrete ligne"