VBA - Erreur de compilation: Next sans For -

[Fermé]
Signaler
-
 rebla -
Bonjour,

Je voudrais mettre en place un programme qui va chercher dans un fichier excel la case "total général" et par la suite importer les données... Dans mon fichier j'ai trois tableaux avec a chaque fois "total général" et j'aimerais qu'il me localise les trois. Dans un premier temps le programme suivant me localisé seulement le premier tableau:

i = 0
maDonnee = "Total général"
For Each cell In Sheets(onglet).Range("A1:A100")
i = i + 1
If cell = maDonnee Then
reponse = MsgBox(" resultat =" & cell.Offset(-1, 1) & " ,Voulez-vous continuer?", vbOKCancel, "Validation")

' MsgBox ("resultat=" & cell.Offset(-1, 1) & " lig=" & i)
trouve = True
Exit For
End If
Next
If Not trouve Or reponse = 2 Then
MsgBox ("pas de Total général ou abandon ")
classeurSource.Close
Exit Sub
End If
i = i - 1...

Jusque là ça marche pour le premier, pour les autres j'ai rajouté ce qui suit:

i = 0
maDonnee = "Total général"
For Each cell In Sheets(onglet).Range("A1:A100")
i = i + 1
If cell = maDonnee Then
reponse = MsgBox(" resultat =" & cell.Offset(-1, 1) & " ,Voulez-vous continuer?", vbOKCancel, "Validation")

trouve = False

i = i + 2
If cell = maDonnee Then
reponse = MsgBox(" resultat =" & cell.Offset(-1, 1) & " ,Voulez-vous continuer?", vbOKCancel, "Validation")

trouve = False
i = i + 3
If cell = maDonnee Then
reponse = MsgBox(" resultat =" & cell.Offset(-1, 1) & " ,Voulez-vous continuer?", vbOKCancel, "Validation")

trouve = True

Exit For
End If
Next

Avec celui là il m'affiche un message d'erreur: Erreur de compilation Next sans For.
Quelqu'un a une idée du problème.
Merci et bonne journée.
A voir également:

2 réponses

bonjour,

dans la partie rajoutée, tu ouvres 3 If ...; on ne trouve qu'un seul End If.

ton Next se trouve dans une condition If ..... End If , alors qu'il n'y a pas de For dans cette condition.

Corrige les End If ça devrait aller mieux !

Par ailleurs , pas compris l'incrémentation de la variable i qui n'est pas utilisée?

Bonne suite
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42584 internautes nous ont dit merci ce mois-ci

Autant pour moi, j'aurais du mettre le programme complet, en fait le i on l'utilisera plus tard, car le programme que je veux mettre en place doit chercher des cellules a coté de "total général" double cliquer sur ces cases (en double cliquant on a le detail de cette case) et avec ce détail je vais l'importer et créer un tableau croisé dynamique, le problème c'est que j'ai besoin de trouver tout les "total général" qui se trouvent dans la collone A, et mon programme ne trouve que le premier, le programme complet est:

Private Sub CommandButton2_Click()
Dim classeurSource As Workbook, classeurDestination As Workbook
Dim objWorksheet As Worksheet, objRange As Range
onglet = Feuil2.Cells(1, 1)
Set classeurSource = Application.Workbooks.Open(nomfichierentre)
Sheets(onglet).Select
Set objWorksheet = ThisWorkbook.ActiveSheet
trouve = False
i = 0
maDonnee = "Total général"
For Each cell In Sheets(onglet).Range("A1:A100")
i = i + 1
If cell = maDonnee Then
reponse = MsgBox(" resultat =" & cell.Offset(-1, 1) & " ,Voulez-vous continuer?", vbOKCancel, "Validation")
trouve = True
Exit For
End If
Next
If Not trouve Or reponse = 2 Then
MsgBox ("pas de Total général ou abandon ")
classeurSource.Close
Exit Sub
End If
i = i - 1
ref = "B" & i
Sheets(onglet).Range(ref).Select
Selection.ShowDetail = True
Sheets(onglet).Select
Sheets(onglet).Range("C" & i).Select
Selection.ShowDetail = True
Set classeurDestination = ThisWorkbook
classeurSource.Sheets("Feuil1").Cells.Copy classeurDestination.Sheets("Feuil2").Range("A1")
classeurSource.Sheets("Feuil2").Cells.Copy classeurDestination.Sheets("Feuil3").Range("A1")
classeurSource.Close False


End Sub
Sinon pour le If t'as raison le message d'erreur disparait, mais il n'a pas l'air de marcher pour les trois.
Merci par avance
dans ta boucle for each .... , dès que tu trouves une cellule = "Total général" , tu fais un Exit For ! Donc on ne poursuit pas la recherche !!

If cell = maDonnee Then
reponse = MsgBox(" resultat =" & cell.Offset(-1, 1) & " ,Voulez-vous continuer?", vbOKCancel, "Validation")
trouve = True
Exit For
End If 
Tout à fait! Merci beaucoup pour ton aide.
Bonne journée