VBA la méthode range de l'objet global a ....

Fermé
guillaumesk850 - 16 mai 2011 à 23:35
 guillaumesk850 - 17 mai 2011 à 00:14
Bonjour,

Je suis débutant en VBA et je souhaite développé mon premier programme dans lequel je pourrais mettre en couleur les cellules qui correspondent a une occupation d'un agent.
Voici mon code :

Dim rRange As Range, Couleur As Integer, ColDeb As Integer, ColFin As Integer
Dim vI As Variant
Set rRange = Range([A4], [A9])
For Each vI In rRange
If cbagent.Text = vI Then
L = vI.Row
Exit For
End If
Next vI
Index = frameOptDpl.ActiveControl.TabIndex
Select Case Index
Case 0
Couleur = 3
Case 1
Couleur = 41
Case 2
Couleur = 43
Case 3
Couleur = 35
End Select
With Sheets("Juin")
Dates = Application.Transpose(Application.Transpose(.Range("C5:AF5")))
ColDeb = Application.Match(CLng(DTPicker1), Dates)
ColFin = Application.Match(CLng(DTPicker2), Dates)
Range("(L, ColDeb):(L, ColFin)").Interior.ColorIndex = 6
...

C'est donc le dernier Range("L, ...) qui pose problème
Je compte sur vous pour m'apporter un peu d'aide

Merci d'avance :)

1 réponse

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 mai 2011 à 00:03
Bonjour,

Il y a des choses que je ne comprends pas:

Tu déclares vI de type Variant et tu l'utilises comme un objet dans For Each vI In rRange, ensuite tu testes si un contrôle contient un objet dans if cbagent.Text = vI then, il y a déjà là une incompatibilité.

Dans Range("(L, ColDeb):(L, ColFin)").Interior.ColorIndex = 6 ce qui est entre guillemet est considéré comme une chaîne de caractère et non comme une variable

;o)
0
guillaumesk850
17 mai 2011 à 00:14
Merci Polux31 pour ta réponse :)

Pour ce qui est du "Range" il serait peut être plus correct d'écrire :
Range(.Cells(L, ColDeb), .Cells(L, ColFin)).Interior.ColorIndex = 6

Par ce qui est de la première partie (l'incompatibilité), aurais tu une solution a me proposer ?
0