Variable de contrôle For déjà utilisée

Fermé
Chryscustines Messages postés 4 Date d'inscription mardi 18 décembre 2018 Statut Membre Dernière intervention 19 décembre 2018 - 18 déc. 2018 à 21:07
NHenry Messages postés 15163 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 1 novembre 2024 - 19 déc. 2018 à 21:26
Bonjour,

Je suis vraiment débutant en VBA et je rencontre un petit problème.

Je souhaite appliquer une macro à l'ensemble des cellules (une par une) d'une séléction.
Cette macro comprend une boucle For Each.

Pour appliquer cette macro à chaque cellule de la sélection (ici : Rang("zone_d_impression")), j'ai fait une boucle intégrant la première boucle avec For Each.

Le message d'erreur de compilation "variable de contrôle For déjà utilisée" s'affiche sur le 2ème For Each (voir code ci-dessous).

Je crois comprendre qu'il me faut changer de "counter" pour chaque For, mais je ne sais pas comment...

Ci-dessous ma macro. Pourriez-vous SVP m'éclairer quant à une solution possible?

Je vous remercie énormément

Sub AutoFitMergedCellRowHeight()
 
Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
Dim CurrCell As Range
Dim ActiveCellWidth As Single, PossNewRowHeight As Single
 
 For Each CurrCell In Range("zone_d_impression")
 
 If ActiveCell.MergeCells Then
   With ActiveCell.MergeArea
     .WrapText = True 'enclenche le renvoi à la ligne automatique (modif fs)
     If .Rows.Count = 1 Then 'And .WrapText = True Then
       Application.ScreenUpdating = True
       CurrentRowHeight = .RowHeight
       ActiveCellWidth = ActiveCell.ColumnWidth
       For Each CurrCell In Selection
           MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth
       Next
      .MergeCells = False
      .Cells(1).ColumnWidth = MergedCellRgWidth
      .EntireRow.AutoFit
       PossNewRowHeight = .RowHeight
      .Cells(1).ColumnWidth = ActiveCellWidth
      .MergeCells = True
      .RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, CurrentRowHeight, PossNewRowHeight)
     End If
   End With
 End If
 
 Next CurrCell

 
End Sub




Configuration: Windows / Chrome 71.0.3578.98
A voir également:

1 réponse

NHenry Messages postés 15163 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 1 novembre 2024 345
18 déc. 2018 à 21:50
Tu as
For Each CurrCell In Range("zone_d_impression")
puis dans ta boucle
For Each CurrCell In Selection

Il faut un nom unique par chacune des boucle.
0
Chryscustines Messages postés 4 Date d'inscription mardi 18 décembre 2018 Statut Membre Dernière intervention 19 décembre 2018
18 déc. 2018 à 23:17
Merci pour ta réponse rapide.

Il me faut un nom différent pour chacune des boucles. S'agit-il de CurrCell qui doit avoir un autre nom sur une des boucles ?

J'ai déjà essayé ceci:

Dim CurrCell as range
Dim cellule as range

For Each cellule In Range("zone_d_impression")
puis dans ta boucle
For Each CurrCell In Selection


Ça n'a rien donné

Pourrais-tu stp être plus précis ?
Merci beaucoup
0
NHenry Messages postés 15163 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 1 novembre 2024 345
19 déc. 2018 à 18:48
Comment ça "Ça n'a rien donné" ?
Tu a aussi changé le nom dans le code concerné ?
0
Chryscustines Messages postés 4 Date d'inscription mardi 18 décembre 2018 Statut Membre Dernière intervention 19 décembre 2018
19 déc. 2018 à 18:56
J'ai changé le nom CurrCell par cellule dans la première boucle intégrant la 2ème. (voir la subtilité sur le code ci-dessus)

Sinon je ne vois pas quel nom je devait changer
0
Chryscustines Messages postés 4 Date d'inscription mardi 18 décembre 2018 Statut Membre Dernière intervention 19 décembre 2018
19 déc. 2018 à 18:58
Lorsque j’exécute ma macro pas à pas, je remarque qu'il ne parcourt pas les cellules de ma plage zone_d_impression les unes après les autres.

Il reste sur la cellule sélectionnée.
0
NHenry Messages postés 15163 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 1 novembre 2024 345
19 déc. 2018 à 21:26
Peux-tu poster le code une fois modifié ?
0