Probleme boucle sur plusieurs feuille
GE
-
chossette9 Messages postés 6855 Date d'inscription Statut Contributeur Dernière intervention -
chossette9 Messages postés 6855 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un fichier de plusieurs pages et je veux faire tourner une macro qui va chercher des valeurs dans d'autres fichiers pour chaque page (sauf quelques une qui ont une cellule vide en B1). J'ai commencé par la struture de la boucle et elle ne fonctionne pas.
Sub tentative_boucle()
Dim feuille As Worksheet
For Each feuille In Worksheets
feuille.Activate
Range("B1").Select
If Selection.Value = "" Then
Else
Range("A1").Select
ActiveCell.FormulaR1C1 = "ok"
Next feuille
End Sub
La macro ne bug pas mais pour autant pour les pages contenant une infos en B1 , elle n'inscrit aps OK en A1 .
N'etant pas expert en vba, je m'en remets à l'aide du forum,
Merci d'avance.
J'ai un fichier de plusieurs pages et je veux faire tourner une macro qui va chercher des valeurs dans d'autres fichiers pour chaque page (sauf quelques une qui ont une cellule vide en B1). J'ai commencé par la struture de la boucle et elle ne fonctionne pas.
Sub tentative_boucle()
Dim feuille As Worksheet
For Each feuille In Worksheets
feuille.Activate
Range("B1").Select
If Selection.Value = "" Then
Else
Range("A1").Select
ActiveCell.FormulaR1C1 = "ok"
Next feuille
End Sub
La macro ne bug pas mais pour autant pour les pages contenant une infos en B1 , elle n'inscrit aps OK en A1 .
N'etant pas expert en vba, je m'en remets à l'aide du forum,
Merci d'avance.
2 réponses
-
C'est bon j'ai trouvé la solution.
Mon bouton n'était pas relié à la bonne macro.
Pour ceux que ça interesse la macro marche telle qu'elle est.-
Je me demande comment ta macro peut fonctionner correctement, vu que tu ne termines pas ton If par un End If !
Tu peux également améliorer un peu ta macro : les Select ralentissent l'exécution de la macro.
Du coup tu pourrais avoir ceci comme code :Sub tentative_boucle() Dim feuille As Worksheet For Each feuille In Worksheets feuille.Activate If Not (IsEmpty(Cells(1, 2))) Then Cells(1, 1).FormulaR1C1 = "ok" End If Next feuille End Sub
Cordialement.
-
-
Bonjour,
vous pouvez rajouter un "End If" avant le Next.
De plus, au lieu de faire le "si c'est vide on fait rien sinon on fait quelque chose", faites "si c'est pas vide on fait quelque chose".
Du coup votre code devient :Sub tentative_boucle() Dim feuille As Worksheet For Each feuille In Worksheets feuille.Activate Range("B1").Select If Selection.Value <> "" Then Range("A1").Select ActiveCell.FormulaR1C1 = "ok" End If Next feuille End Sub
Cordialement.
Ce mec la n'était pas une lumière, car il était niais.