Boucle With pour mise en forme variable "texte"

Résolu/Fermé
Jojo54 - Modifié par Jojo54 le 28/05/2015 à 16:15
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 29 mai 2015 à 14:23
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

AlexNew Messages postés 11 Date d'inscription dimanche 24 mai 2015 Statut Membre Dernière intervention 2 juin 2015 2
28 mai 2015 à 17:24
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 jeudi 28 mai 2015 Statut Membre Dernière intervention 5 novembre 2015
28 mai 2015 à 17:33
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 jeudi 28 mai 2015 Statut Membre Dernière intervention 5 novembre 2015
29 mai 2015 à 11:23
Personne pour me proposer une solution ? ou un piste de réflexion?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
29 mai 2015 à 11:43
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 jeudi 28 mai 2015 Statut Membre Dernière intervention 5 novembre 2015
29 mai 2015 à 14:19
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > Jojos54 Messages postés 15 Date d'inscription jeudi 28 mai 2015 Statut Membre Dernière intervention 5 novembre 2015
29 mai 2015 à 14:23
de rien.
A++
0