Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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...

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

*, 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 pas me payer la tête de toi

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…