EXCEL PATINE

clemodoun Messages postés 32 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 21 novembre 2007 - 21 sept. 2007 à 18:34
clemodoun Messages postés 32 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 21 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

End If
i = i + 1
Wend


End If

End Sub


 

2 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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 ?

MPi²
0
clemodoun Messages postés 32 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 21 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.
0
Rejoignez-nous