Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro pour colorier une zone qui ne fonctionne pas

  • Initiateur de la discussion Initiateur de la discussion Trance4life
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Trance4life

XLDnaute Nouveau
Bonjour,

Je veux colorier une partie de mon calendrier en fonction de la valeur de la semaine. Aujourd'hui on est le 6 Juin donc en semaine 23.

Le souci est avec le If. Quand je l'enlève, ça marche. Or, j'en est besoin, car je voudrais colorier ma colonne seulement quand le numéro de semaine d'aujourd'hui correspond au numéro de semaine du calendrier.

Mon code est le suivant :

b = Format(Range("B2").Value, "ww")

If Cells(1, 26).Value = b Then
i = 23
Range(Cells(4, i + 3), Cells(20, i + 3)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If

Merci
 

Pièces jointes

Re : Macro pour colorier une zone qui ne fonctionne pas

Bonjour Trance4life,

Y'a un soucis avec le type de tes variables : b est un String et Cells(1,26).Value est un Double. Tu peux mettre :
Code:
If CInt(Cells(1, 26).Value) = CInt(b) Then
Pour pallier à ce problème.
Bonne journée.
 
Re : Macro pour colorier une zone qui ne fonctionne pas

Bonjour Wuted, Trance4life,



Ou tout simplement en déclarant tes variables "correctement"

Il te suffis d'ajouter:

Code:
Dim b As Double


Si non, déclarer tes variables sans en indiquer le type reviens à ne pas déclarer de variable du tout. Le programme va leur attribuer le type de base se qui peut engendré se genre de problème.

Lorsque tu déclare tes variables, spécifie le type

Dim toto as integer

Dim toti as String

Comme tu peux le remarquer, pour définir un type il suffit d'ajouter as + le type

Meilleures salutations
 
Re : Macro pour colorier une zone qui ne fonctionne pas

Bonjour Trance4life,

Il suffit de définir les variables concernées en type numérique pour éviter les erreurs de comparaison.

Modifie donc ton code comme suit :

Code:
Sub Macro1()

Dim a As Integer
Dim b As Byte
Dim c

a = Format(Range("C2").Value, "yy")
If a > Format(Range("B2").Value, "yy") Then
  Range("B6").Value = CDate("01/01/" & a)
  Range("C6").Value = Format(Range("C2").Value, "mm/dd/yyyy")
  ElseIf a = Format(Range("B2").Value, "yy") Then
  Range("B6").Value = ""
End If
b = Format(Range("B2").Value, "ww")
If Cells(1, 26).Value = b Then
  i = 23
  With Range(Cells(4, i + 3), Cells(20, i + 3)).Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent6
    .TintAndShade = 0
    .PatternTintAndShade = 0
  End With
End If
End Sub
Tu remarqueras par ailleurs que j'ai supprimé toutes les lignes avec ".Select". Elles sont totalement inutiles car tu peux modifier les cellules sans les sélectionner au préalable : le code y gagne en clarté et en rapidité.

Cordialement.

Edit :Oups, bonjour WUTED, Vorens, vous êtes les plus rapides sur ce coup !
 
Re : Macro pour colorier une zone qui ne fonctionne pas


Merci j'ai ajouté à mes déclarations :

Dim b as Integer

et ça marche nickel 😀
 
Re : Macro pour colorier une zone qui ne fonctionne pas


Merci je ne pensais pas qu'on pouvais utiliser directement le Range.Value sans sélectionner une cellule.
 
Re : Macro pour colorier une zone qui ne fonctionne pas

Sinon comment vous savez que b est un string si je déclare pas mes variables ?

Et j'ai pas très bien compris en quoi c'était un string vu que c'est un numéro de semaine et un string est une chaine de caractère.
 
Re : Macro pour colorier une zone qui ne fonctionne pas

Salut,

C'est VBA qui attribue automatiquement un type si il n'est pas spécifier et vu que ton format de cellule était lui aussi non spécifié il a choisi de prendre le type string pour ta variable.

Pour une valeur dans une cellule, le type de base sera un string.

De plus, tu peux voir le type d'une variable en effectuant un clic droit sur ta variable puis "information expresse"
 
Re : Macro pour colorier une zone qui ne fonctionne pas

Re,

Code:
VarType(b)
Aprés le pourquoi du comment, sans avoir approfondi, je suppose que Format(..) renvoie par défaut une chaine de caractère comportant le numéro de semaine dans ton cas..

Bonne journée.
 
Re : Macro pour colorier une zone qui ne fonctionne pas


Ah merci je ne connaissais pas !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
9
Affichages
580
  • Question Question
Microsoft 365 colorer une plage
Réponses
2
Affichages
872
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…