Boucle With pour mise en forme variable "texte"

[Résolu/Fermé]
Signaler
-
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
-
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

3 réponses

Messages postés
11
Date d'inscription
dimanche 24 mai 2015
Statut
Membre
Dernière intervention
2 juin 2015
1
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
Messages postés
15
Date d'inscription
jeudi 28 mai 2015
Statut
Membre
Dernière intervention
5 novembre 2015

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
Messages postés
15
Date d'inscription
jeudi 28 mai 2015
Statut
Membre
Dernière intervention
5 novembre 2015

Personne pour me proposer une solution ? ou un piste de réflexion?
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 642
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 

Messages postés
15
Date d'inscription
jeudi 28 mai 2015
Statut
Membre
Dernière intervention
5 novembre 2015

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
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 642 >
Messages postés
15
Date d'inscription
jeudi 28 mai 2015
Statut
Membre
Dernière intervention
5 novembre 2015

de rien.
A++