Syntaxe VBA

Calvus

XLDnaute Barbatruc
Bonjour le forum,

Quelqu'un peut il m'expliquer pourquoi ce code ne fonctionne pas ?
Code:
Sub Format()
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
    'Renvoie le nom de chaque feuille

Range("s38").Value = 125
        
Next Ws

End Sub

Du moins il ne fonctionne que sur la première feuille (sur 3)


Pas plus que celui-ci ?
Code:
Sub Format()

With Worksheets("feuil1", "feuil2", "feuil3")
        .Range("s38").Value = 125
        .Range("S38:Z38").Font.Bold = True
        .Range("S38:Z38").Font.Color = RGB(255, 0, 255)
      End With
End Sub

Sachant que celui-ci fonctionne :
Code:
Sub Format()

With Worksheets("feuil1")
        .Range("s38").Value = 125
        .Range("S38:Z38").Font.Bold = True
        .Range("S38:Z38").Font.Color = RGB(255, 0, 255)
      End With
End Sub

Merci.
 

Pierrot93

XLDnaute Barbatruc
Re : Syntaxe VBA

Bonjour,

il faut préciser où appliquer l'instruction :
Code:
Sub Format()
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
    'Renvoie le nom de chaque feuille

WS.Range("s38").Value = 125
        
Next Ws

End Sub

bon après midi
@+
 

Calvus

XLDnaute Barbatruc
Re : Syntaxe VBA

Re,

Et pour quelle raison ceci ne fonctionne t'il pas ?
Code:
Sub Format()

With Worksheets("feuil1", "feuil2", "feuil3")
        .Range("s38").Value = 125
        .Range("S38:Z38").Font.Bold = True
        .Range("S38:Z38").Font.Color = RGB(255, 0, 255)
      End With
End Sub

Merci
 

Si...

XLDnaute Barbatruc
Re : Syntaxe VBA

salut

à tester pour les changements sur les 3 feuilles
Code:
Sub Format()
  Dim Ws As Worksheet
  For Each Ws In Worksheets(Array("feuil1", "feuil2", "feuil3"))
    Ws.Range("s38").Value = 125
    Ws.Range("S38:Z38").Font.Bold = True
    Ws.Range("S38:Z38").Font.Color = RGB(255, 0, 255)
 Next
 

Calvus

XLDnaute Barbatruc
Re : Syntaxe VBA

Hello 00 !

J'en reviens pas qu'en plus tu te paies ma tête ! ;);)

Merci pour l'exemple.
J'aurais juste aimé savoir, éventuellement, pourquoi ça ne marchait pas avec Worksheets("feuil1", "feuil2", "feuil3"), alors que ça marche avec Worksheets("feuil1")..
Mais peut être faut il demander à Krosoft...

J'avais bien compris les autres solutions... pour une fois...:rolleyes:

A bientôt :):)
 

Si...

XLDnaute Barbatruc
Re : Syntaxe VBA

Re

Pour éviter de noyer le poisson *

WorkSheets désigne la collection des onglets.

Pour les traiter 1 par 1 et séparément, on utilsera :

WorkSheets("feuil1"), WorkSheets("feuil2"), WorkSheets("feuil3 ") …

Pour en traiter quelques-uns ensemble, on doit passer par un tableau (Array) .
Je préfère
Code:
Sub Format_2()
    Dim Ws As Object
    For Each Ws In Worksheets (Array("Feuil1", "Feuil2", "Feuil3"))
        Ws.Range("s38").Value = "Coucou, Calvus !"
        Ws.Range("s38:z38").Font.Bold = True
        Ws.Range("s38:z38").Font.Color = 3128111
    Next
End Sub

qui est plus réduit que la double boucle

Code:
Sub Format_1()
    Dim n As Byte, Ws As Worksheet
    For Each Ws In Worksheets
      For n = 0 To 2
        If Ws.Name = Array("Feuil1", "Feuil2", "Feuil3")(n) Then
            Ws.Range("s38").Value = "Petit poiffon deviendra grand !"
            Ws.Range("s38:z38").Font.Bold = True
            Ws.Range("s38:z38").Font.Color = 255
        End If
      Next
    Next
End Sub

où la seconde boucle est ici pour caser mon Array ;) en remplacement du test
If Ws.Name = "Feuil1" Or Ws.Name = "Feuil2" Or Ws.Name = "Feuil3" Then

*:D:D, je connais le rouge et blanc mais pas l’autre et désolé pour avoir maltraité tes codes
 

Calvus

XLDnaute Barbatruc
Re : Syntaxe VBA

Bonsoir,

Meuh non, Calvus ;),

Moi :rolleyes: pas me payer la tête de toi :D

Et en plus tu te débines !!! :):):);)


Pour éviter de noyer le poisson *

Tu as presque réussi ! :):)

Mer Sissi en tout cas. Bien que restant à digérer, c'est beaucoup plus clair.
J'apprécie la pédagogie que tu apportes à tes réponses dans ce forum. Tu viens encore d'en faire la démonstration.

Bonne soirée à tous ;)
 

Statistiques des forums

Discussions
312 194
Messages
2 086 068
Membres
103 110
dernier inscrit
Privé