OVH Cloud OVH Cloud

MFC par vba

7 réponses
Avatar
Jdg74-le gaulois
Encore Moi :-X

suite au code que m'a gentillement fourni Philippe R et Michel Gaboly,
il subsiste un petit soucis!
est il possible que si l'on utilise pas tous les codes possibles donc
pas toutes les couleurs que la boucle For s'ajuste automatiquement

Merci

Sub Compare(c As Range)
Dim Mat, i As Integer
Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
For i = 0 To 33
If c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Mat(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub

7 réponses

Avatar
FxM
Bonsoir,

Essaie for i = 0 to UBound(Mat) (non testé)

@+
FxM



Jdg74-le gaulois wrote:
Encore Moi :-X

suite au code que m'a gentillement fourni Philippe R et Michel Gaboly,
il subsiste un petit soucis!
est il possible que si l'on utilise pas tous les codes possibles donc
pas toutes les couleurs que la boucle For s'ajuste automatiquement

Merci

Sub Compare(c As Range)
Dim Mat, i As Integer
Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
For i = 0 To 33
If c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Mat(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub


Avatar
Jacquouille Le Gaulois
FxM avait écrit le 29/02/2004 :
for i = 0 to UBound(Mat) (non testé


Ca ne fonctionne pas :'(

Merci quand meme

--
("|`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
(_Y_.)' ._ ) `._ `. ``-..-'
_..`--'_..-_/ /--'_.' ,'
(il),-'' (li),' ((!.-'

Avatar
FxM
Bonsoir,

Pourrais-tu préciser ce qui ne va pas ? J'ai fait l'essai depuis le 29
(et viens de le refaire)

Sub test()
Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
zz=ubound(mat)
For i = 0 To zz
msgbox zz & "-" & Mat(i)
Next i
End Sub

renvoit bien 33 suivi de "-" et de chacune des valeurs de la liste.

@+
FxM




Jacquouille Le Gaulois wrote:
FxM avait écrit le 29/02/2004 :

for i = 0 to UBound(Mat) (non testé



Ca ne fonctionne pas :'(

Merci quand meme




Avatar
Jacquouille Le Gaulois
FxM a exposé le 02/03/2004 :
Bonsoir,

Pourrais-tu préciser ce qui ne va pas ? J'ai fait l'essai depuis le 29 (et
viens de le refaire)

Sub test()
Mon problème est:


Lorsque je saisie un de mes sigles "Sy" par exemple dans le cellule H6,
elle se colore en bleu, jus que la normal mais lorsque je suprime "Sy"
au lieu de revenir sans aucun remplissage ma cellule se rempli de la
premiere couleur de la cellule de code non renseignee dans ma feuille
"code"
car le code suivant est dans un module:
Sub Compare(c As Range)
Dim Sam, i As Integer
Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
zz = UBound(Sam)
For i = 0 To UBound(Sam)
If c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Sam(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub

et celui ci dans le code de cahque feuille de mois
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim c As Range, i As Integer
If Not Intersect(Target, Range("C6:AG35")) Is Nothing Then
' MEFC
For Each c In Intersect(Target, Range("C6:AG35"))
Compare c
Next c
End If
End Sub



Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31,
32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37)
zz=ubound(mat)
For i = 0 To zz
msgbox zz & "-" & Mat(i)
Next i
End Sub

renvoit bien 33 suivi de "-" et de chacune des valeurs de la liste.

@+
FxM




Jacquouille Le Gaulois wrote:
FxM avait écrit le 29/02/2004 :

for i = 0 to UBound(Mat) (non testé



Ca ne fonctionne pas :'(

Merci quand meme




--
("|`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
(_Y_.)' ._ ) `._ `. ``-..-'
_..`--'_..-_/ /--'_.' ,'
(il),-'' (li),' ((!.-'



Avatar
Jacquouille Le Gaulois
Merci beaucoup cela fonctionne a merveille et de plus j apprend toute
les fois avec toi Michel Gaboly :D



Michel Gaboly a formulé ce mercredi :
Sub Compare(c As Range)
Dim Sam, i As Integer
Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
zz = UBound(Sam)
For i = 0 To UBound(Sam)
if c = "" Then
c.Interior.ColorIndex = xlNone
ElseIf c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Sam(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub


--
("|`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
(_Y_.)' ._ ) `._ `. ``-..-'
_..`--'_..-_/ /--'_.' ,'
(il),-'' (li),' ((!.-'

Avatar
Michel Gaboly
Bonsoir,

Cela paraît normal : tu as une boucle dans laquel il y a une trentaine
de passages. Lors de chacun d'eux, une comparaison est faite entre c
(cellule modifiée appartenant à l'intersection entre Target et la plage
"C6:AG35") et la cellule située n colonnes à droite de Code!B4, où n
représente le numéro de passage dans la boucle moins 1 (car on
commence à zéro et non à 1 : For i = 0 To ...).

Si l'une des cellules concernées sur la ligne 4 de la feuille Code n'est pas
renseignée, quand tu effaces "Sy", la cellule correspondante correspond
à cette cellule non renseignée, et récupère donc la couleur indiquée par le
nième élément de Sam (le tableau ou Array).

Tu ne peux pas obtenir un résultat incolore pour les cellules vides, s'il
y a aussi des cellules vides dans ta zone de comparaison (cellules B4 et
suivantes de la feuille Code).

Une modif de ce genre devrait résoudre le problème (non testé) :


Sub Compare(c As Range)
Dim Sam, i As Integer
Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
zz = UBound(Sam)
For i = 0 To UBound(Sam)
if c = "" Then
c.Interior.ColorIndex = xlNone
ElseIf c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Sam(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub



FxM a exposé le 02/03/2004 :
Bonsoir,

Pourrais-tu préciser ce qui ne va pas ? J'ai fait l'essai depuis le 29 (et
viens de le refaire)

Sub test()
Mon problème est:


Lorsque je saisie un de mes sigles "Sy" par exemple dans le cellule H6,
elle se colore en bleu, jus que la normal mais lorsque je suprime "Sy"
au lieu de revenir sans aucun remplissage ma cellule se remplit de la
premiere couleur de la cellule de code non renseignee dans ma feuille
"code"
car le code suivant est dans un module:
Sub Compare(c As Range)
Dim Sam, i As Integer
Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
zz = UBound(Sam)
For i = 0 To UBound(Sam)
If c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Sam(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub

et celui ci dans le code de cahque feuille de mois
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim c As Range, i As Integer
If Not Intersect(Target, Range("C6:AG35")) Is Nothing Then
' MEFC
For Each c In Intersect(Target, Range("C6:AG35"))
Compare c
Next c
End If
End Sub

Mat = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29, 30, 31,
32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37, 37, 37)
zz=ubound(mat)
For i = 0 To zz
msgbox zz & "-" & Mat(i)
Next i
End Sub

renvoit bien 33 suivi de "-" et de chacune des valeurs de la liste.

@+
FxM




Jacquouille Le Gaulois wrote:
FxM avait écrit le 29/02/2004 :

for i = 0 to UBound(Mat) (non testé



Ca ne fonctionne pas :'(

Merci quand meme




--
("|`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
(_Y_.)' ._ ) `._ `. ``-..-'
_..`--'_..-_/ /--'_.' ,'
(il),-'' (li),' ((!.-'


--
Cordialement,

Michel Gaboly
http://www.gaboly.com




Avatar
Michel Gaboly
De rien, c'est juste parce que tu débutes ;-))


Merci beaucoup cela fonctionne a merveille et de plus j apprend toute
les fois avec toi Michel Gaboly :D

Michel Gaboly a formulé ce mercredi :
Sub Compare(c As Range)
Dim Sam, i As Integer
Sam = Array(16, 17, 18, 19, 20, 0, 22, 23, 24, 0, 26, 27, 28, 29,
30, 31, 32, 33, 34, 0, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 37,
37, 37)
zz = UBound(Sam)
For i = 0 To UBound(Sam)
if c = "" Then
c.Interior.ColorIndex = xlNone
ElseIf c = Sheets("Code").Range("B4").Offset(0, i) Then
c.Interior.ColorIndex = Sam(i)
Exit For
Else
c.Interior.ColorIndex = xlNone
End If
Next i
End Sub


--
("|`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
(_Y_.)' ._ ) `._ `. ``-..-'
_..`--'_..-_/ /--'_.' ,'
(il),-'' (li),' ((!.-'


--
Cordialement,

Michel Gaboly
http://www.gaboly.com