[VBA]Utiliser une lettre dans une boucle For

Résolu
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 1 février 2007 - 19 oct. 2006 à 16:22
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 19 oct. 2006 à 20:44
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

Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
19 oct. 2006 à 16:31
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
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
19 oct. 2006 à 16:34
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
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
19 oct. 2006 à 16:37
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
0
lycaon_58 Messages postés 31 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 1 février 2007
19 oct. 2006 à 16:51
merci à tous les deux !!!!
j'ai effectivement pris la solution de delphin boy....

++

Lycaon
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
19 oct. 2006 à 19:43
> 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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
19 oct. 2006 à 20:44
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 #
0
Rejoignez-nous