Probleme boucle sur plusieurs feuille

GE -  
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.
A voir également:

2 réponses

GE
 
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.
0
chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
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.
0
chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
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.
0