Boucle With pour mise en forme variable "texte"

Résolu
Jojo54 -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Voici mon problème, je cherche à optimer la mise en forme de colonne pour cela j'ai créer une variable texte qui contiens l'ensemble des plages que je veux sélectionner mais celle ci n'étant pas défini comme objet je n'arrive pas à utiliser cette variable pour ma mise en forme si vous avez une idée je prend

Sub Weekformat_Cliquer()
Dim i As Integer
Dim j As Integer
Dim week_col

week_col = "Columns(7)" ' définit ma première valeur

For i = 9 To 390 Step 7     'boucle d'incrémentation Columns(7), Columns(9)...
        j = i + 1
        week_col = week_col & ", Columns(" & i & "), Columns(" & j & ")"  
Next i

With ThisWorkbook.Sheets("PdC").Range(week_col).Interior  'mise en forme
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .TintAndShade = -0.249977111117893
    .PatternTintAndShade = 0
End With
End Sub


L'erreur arrive au moment de l'instruction with

Ci vous avez des idées je vous écoute attentivement

Merci
A voir également:

3 réponses

AlexNew Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour ;
Au premier abord, il faudrait definir le type de données que vous allez mettre dans week_col, par exemple :
Dim week_col as string

mais pour votre boucle, je crois qu'il serait plus judicieux de definir week_col comme en table, de sorte que dans votre boucle, i -10 (pour commencer la table a 0) soit l'indice de week_col.
Cordialement
0
Jojos54 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne vois pas trop l'intérêt de commencer la table à 0 à vrai dire, vous y voyez une influence particulière sur mon code?

Je pense que c'est bien une histoire de format mais je ne vois pas comment le résoudre
0
Jojos54 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Personne pour me proposer une solution ? ou un piste de réflexion?
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Jojos54, tu dis :
celle ci n'étant pas défini comme objet je n'arrive pas à utiliser cette variable
AlexNew te répond :
Au premier abord, il faudrait definir le type de données que vous allez mettre dans week_col
C'est tout à fait là que se situe le problème.
Je pense que c'est bien une histoire de format
Si par format tu sous-entend formatage de cellule (Range), non ce n'est pas cela le problème.
une solution ? ou un piste de réflexion?
Essaye ce test :
1- On déclare week_col As Range. Comme ceci, on travaille directement avec l'objet. Attention on affecte les variables objets avec le mot clé Set.
2- On utilise Union pour "regrouper", "assembler" deux (ou plus, ici 3) objets Range.

Sub Test()
Dim i As Integer
Dim j As Integer
Dim week_col As Range

Set week_col = Columns(7)
For i = 9 To 390 Step 7
        j = i + 1
        Set week_col = Union(week_col, Columns(i), Columns(j))
Next i
week_col.Select
End Sub 

0
Jojos54 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
super ça marche c'est ce que je voulais, la fonction Union que je ne connaissais par pour regrouper les objets est parfaitement indiqué. Cela me fait gagner un temps considérable sur l'exécution de ma macro ou j'exécutai auparavant la mise en forme colonne par colonne

Merci de ton aide
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > Jojos54 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
de rien.
A++
0