VBA - Erreur 9 à la fin d'une boucle For/Next
J'ai un problème avec mon code. Il s'exécutent très bien et marche parfaitement mais à la fin de ma boucle le logiciel me mets un message d'erreur 9.
Et en effet dès que je mets du code après ce Next i, le code ne s'enclenche pas et s'arrête au Next i (à la fin du code ci-dessous).
Sur le code je ne vous ai pas mis ce qu'il y a après le Next i car il ne s'enclenche pas donc inutile pour l'instant :
Certains ont des idées ?
Sub Actualiser()
'
'Trouve le nombre de feuilles dans le fichier
Dim NbFeuil As Long, Sh As Worksheet
NbFeuil = 0
For Each Sh In ActiveWorkbook.Worksheets
NbFeuil = NbFeuil + Sh.HPageBreaks.Count + 1
Next Sh
'VARIABLES
Dim a As Integer
a = 8
Dim p As Integer
Dim i As Long
For i = 1 To NbFeuil
Sheets(i).Select 'selectionne les feuilles du classeur une par une
If Range("A4").Value = "Dimensions extérieures" Then
Sheets(i).Range("C3").Copy 'Désignation du produit
Sheets("Résumé_Panneaux").Cells(a, 2).PasteSpecial xlPasteValues
Sheets(i).Range("J4").Copy 'Quantité
Sheets("Résumé_Panneaux").Cells(a, 3).PasteSpecial xlPasteValues
Sheets(i).Range("F5").Copy 'Longueur
Sheets("Résumé_Panneaux").Cells(a, 4).PasteSpecial xlPasteValues
Sheets(i).Range("G5").Copy 'Hauteur
Sheets("Résumé_Panneaux").Cells(a, 5).PasteSpecial xlPasteValues
Sheets(i).Range("H5").Copy 'Epaisseur
Sheets("Résumé_Panneaux").Cells(a, 6).PasteSpecial xlPasteValues
Sheets(i).Range("O4").Copy 'Surface unitaire
Sheets("Résumé_Panneaux").Cells(a, 7).PasteSpecial xlPasteValues
Sheets(i).Range("P4").Copy 'Surface TOTAL
Sheets("Résumé_Panneaux").Cells(a, 8).PasteSpecial xlPasteValues
Sheets(i).Range("R4").Copy 'Poids unitaire
Sheets("Résumé_Panneaux").Cells(a, 9).PasteSpecial xlPasteValues
Sheets(i).Range("S4").Copy 'Poids TOTAL
Sheets("Résumé_Panneaux").Cells(a, 10).PasteSpecial xlPasteValues
Sheets(i).Range("C1").Copy 'Nom de l'affaire
Sheets("Résumé_Panneaux").Cells(2, 4).PasteSpecial xlPasteValuesAndNumberFormats
Sheets(i).Range("C2").Copy 'Numéro du dossier
Sheets("Résumé_Panneaux").Cells(3, 4).PasteSpecial xlPasteValuesAndNumberFormats
a = a + 1
End If
'LIGNE DE TOTAL (idéalement mise après le NEXT i mais ne fonctionne pas après???)
Sheets("Résumé_Panneaux").Select
Cells(a, 2).Value = "TOTAUX"
Cells(a, 3).Value = 0
Cells(a, 8).Value = 0
Cells(a, 10).Value = 0
Cells(a, 4).Value = "-"
Cells(a, 5).Value = "-"
Cells(a, 6).Value = "-"
Cells(a, 7).Value = "-"
Cells(a, 9).Value = "-"
For p = 8 To (a - 1)
Cells(a, 3).Value = Cells(a, 3).Value + Cells(p, 3).Value
Cells(a, 8).Value = Cells(a, 8).Value + Cells(p, 8).Value
Cells(a, 10).Value = Cells(a, 10).Value + Cells(p, 10).Value
Next p
Next iBonjour,
Regarde le nom de ta feuille Résumé_Panneaux afin de voir si son écriture est identique à celle placée de la macro (espace avant ou après, majuscule/ minuscule, ...etc)
oui tout est bon de ce coté là c'est ca le truc étrange...
Et mon code s'exécute donc je suppose qu'il est correct c'est vraiment juste une fois qu'il à balayer toute les pages j'ai limpression.
Bonjour,
je pense que tu calcules mal ton nombre de feuilles, qui si j'ai bien compris devrait correspondre au nombre d'onglets et non au nombre de pages à imprimer. Et comme tu as plus de pages à imprimer que d'onglets dans ton classeur, après avoir parcouru toutes les feuilles, i contient une valeur qui ne correspond à aucun onglet.
essaie en remplaçant
NbFeuil = 0
For Each Sh In ActiveWorkbook.Worksheets
NbFeuil = NbFeuil + Sh.HPageBreaks.Count + 1
Next Shpar
nbfeuil=sheets.countca marche nickel !
Merci beaucoup !!