[VBA]Utiliser une lettre dans une boucle For [Résolu]

Signaler
Messages postés
31
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
1 février 2007
-
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
-
Bonjour à tous,
 
Je voudrais réaliser de la mise en forme sur plusieurs colonnes non adjacentes.
 
For Each X In [B,I,M,R,T]
 
Columns("X:X" ).Select
 
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThick
            .ColorIndex = xlAutomatic
        End With
Next X
 
Mais cette syntaxe n'est pas fonctionnelle. Quelle est la bonne syntaxe ?
 
Merci pour votre aide,
 
Lycaon

6 réponses

Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Salut, essaie avec :

Dim X As Variant

For Each X In Array("B", "I", "M", "R", "T")
Columns(X & ":" & X).Select

... suite de ton code
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Salut,
Essaie ceci peu etre que cela t'aidera (petite ruse )
Dim Colonnes() 
Dim i As Integer 
Colonnes =   Array ("B", "I", "M", "R", "T") 

For i  = LBound(Colonnes) To UBound(Colonnes) 
    Columns(Colonnes(i) & ":" & Colonnes(i)).Select 
    With Selection.Borders(xlEdgeRight) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
        .ColorIndex = xlAutomatic 
    End With 
Next i 
 

<small> Coloration syntaxique automatique [AFCK]</small>
       

@+,   Ju£i?n
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Re,
Je suis un peu a la bourre (le temps de tester)...
En tout cas prends celle de  766399 Dolphin Boy est mieux (moins de déclaration)
> =766399 Dolphin Boy : Merci pour le Each X in Array il ne me serait jamais venu l'idée d'essayer.

@+,   Ju£i?n
Messages postés
31
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
1 février 2007

merci à tous les deux !!!!
j'ai effectivement pris la solution de delphin boy....

++

Lycaon
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

> 89254 jrivet : Heureux d'avoir pu donner une idée à quelqu'un, je te livre ma réflexion :
1 - =878091 lycaon_58 commence son code par "for each ... ".
2 - Each n'est utilisable que pour les collections ou tableaux d'objets.
3 - Array() renvoit une variable de type variant contenant un tableau (donc pourquoi pas un tableau d'objets ?).
4 - Peut-on considérer qu'un membre de ce tableau (string, integer, ..) est un objet ? Je me suis dit que oui et voilà.

Maintenant, il y a une 3ème solution pour les amateurs de chaines :

Dim S As String
Dim X As String
Dim i As Integer
  S = "BIMRT"
  For i = 1 To Len(S)
    c = Mid$(S, i, 1)
    Columns(X & ":" & X).Select
    '...
  Next

Bonne prog à tous
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Autre utilisation du for each :

Lorsque tu as une itération à faire, habituellement tu fais For i =0 To toto. Mais lorsque dans cette itération, tu ne dois utiliser que certains items : For Each i In Array(1,5,18,36,47)
Ca simplifie grandement les For i0 To toto / Select case i ou autres If i...

Astuce à connaitre, et c'est pas dans l'aide qu'on va la trouver celle-là.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #