clemodoun
Messages postés32Date d'inscriptionsamedi 21 juillet 2007StatutMembreDernière intervention21 novembre 2007
-
21 sept. 2007 à 18:34
clemodoun
Messages postés32Date d'inscriptionsamedi 21 juillet 2007StatutMembreDernière intervention21 novembre 2007
-
22 sept. 2007 à 19:57
Bonjour à tous,
Je viens poser une question aux nombreux experts du forum. J'ai une macro qui boucle sur une liste de cellules, me copie une feuille autant de fois qu'il y a de celules non vides dans ma liste puis me renomme les feuilles Excel ainsi générées comme les valeurs des cellules. C'est dans un classeur où il y a 10 autres feuilles avec de nombreuses formules avancées d'Excel.
Mon problème est que quand ma macro boucle sur une liste de 100 cellules par exemple, elle me génère seulement 26 feuilles alors qu'elle devrait en générer 100. Or, il y a en principe 255 feuilles dans un classeur Excel et je ne comprends pas pourquoi ma boucle patine sur la 40ème feuille à peu près alors qu'il reste des capacités inutilisées.
Est-ce les autres nombreuses formules des autres feuilles qui réduisent la capacité de mon classeur?
Est-ce un problème dans mon code que je vous envoie pour éventuellement corriger?
Merci à tous d'avance. Je tiens à préciser par ailleurs que je débute sur VBA Excel.
Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim test As Boolean
On Error Resume Next
If CheckBox1.Value = True Then
'variable de test true=feuille existe, false=feuille n'existe pas
'Dans cells(i, 54), 54 représente la colonne. Ici, colonne BB
test = False
i = 1
'On boucle sur la totalité de la liste
'en testant chaque valeur de la liste
While Worksheets("Fiche_imm").Cells(i, 54).Value <> ""
'On teste si la feuille correspondante existe ou non
For j = 1 To Sheets.Count
If Sheets(j).Name = Worksheets("Fiche_imm").Cells(i, 54).Value Then
'la feuille existe
test = True
Exit For
End If
Next j
'si la feuille n'existe pas on la crée en copiant (en dernière position) la feuille déjà exitante "Fiche_imm"
If test = False Then
Sheets("Fiche_imm").Copy After:=Worksheets(Worksheets.Count)
'et on la renomme
Worksheets(Worksheets.Count).Name = Worksheets("Fiche_imm").Cells(i, 54).Value
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 22 sept. 2007 à 13:46
Je viens de faire un test et ta méthode fonctionne bien pour la création (copie) de 254 feuilles nouvelles. Je me retrouve donc avec 257 feuilles au total incluant les 3 feuilles de départ par défaut.
Si j'utilise la méthode Add, je peux en créer 500 beaucoup plus rapidement et sans erreur de dépassement de capacité.
Je pense donc que ce doit être au niveau de la mémoire que ça flanche... (?)
Quel est le message d'erreur que tu reçois ? 1004 ?
clemodoun
Messages postés32Date d'inscriptionsamedi 21 juillet 2007StatutMembreDernière intervention21 novembre 2007 22 sept. 2007 à 19:57
Bonjour MPi,
Merci de t'intéresser à ma question
Aucun message d'erreur ne s'affiche. La boucle continue parfaitement sur les autres cellules de la liste. Seulement que les nouvelles feuilles ne sont plus ajoutées. La dernière feuille ajoutée change perpétuellement de nom pour boucler sur le reste des cellules. En clair, elle passe de name 200 par exemple à name 201 puis 202 puis 203 et ainsi de suite alors que le code est conçu pour que les feuilles 200, 201, 202, etc soient crées.