Meme Macro qui differe selon une seule cellule

Benjo

XLDnaute Junior
salut à tous,
je suis nouveau sur ce forum, et pour cause, cela fait un petit moment que je cherche une solution à mon probleme

En fait, j'ai une macro qui me dit de changer la couleur de la cellule selon que son contenue est inferieur à une valeur plancher (valeur définie dans la colonne "valeur planchée".
Le probleme c'est que je ne sais pas comment faire pour ne pas ecrire à chaque fois la macro avec à chaque fois une nouvelle valeur (j'ai plus de 300 ligne!)

L'idée c'est de faire un truc du style :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If [COLOR="red"]"Cellule de la ligne 1 de la colonne qui m'interesse"[/COLOR].Value < [COLOR="Red"]"valeur planchée de la meme ligne"[/COLOR] Then
With [COLOR="Red"]"Cellule qui m'interesse"[/COLOR].Interior
        .ColorIndex = 3
        .Pattern = xlSolid
    End With
Else
With [COLOR="red"]"Cellule qui m'interesse"[/COLOR].Interior
        .ColorIndex = xlNone
    
    End With
End If
End Sub

Je ne sais pas faire varier ce que j'ai mis en rouge de facon à ecrire une seule macro pour toutes les ligne de ma feuille ...

Pouvez vous m'aider ?

Merci beaucou :)
 

suistrop

XLDnaute Impliqué
Re : Meme Macro qui differe selon une seule cellule

hello ,
vu que je n ai pas le fichier ca va etre plus compliqué mais je vais essayer de t expliquer..

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

[COLOR=Green]'i varie de 1 a 300 cad les lignes[/COLOR]
'met le numéro de la colonne qui t intéresse j ai bien dit le NUMERO !
for i = 1 to 300
If cells(i,colonne).Value < cells(i,colonne2) Then
With cells(i,colonne).Interior
        .ColorIndex = 3
        .Pattern = xlSolid
    End With
Else
With cells(i,colonne).Interior
        .ColorIndex = xlNone
    
    End With
End If
next i
End Sub
 

Benjo

XLDnaute Junior
Re : Meme Macro qui differe selon une seule cellule

J'étais sur que c'etait une boucle qu'il fallait utiliser ! Le probleme c'est que j'ai jamais vraiment compris comment les boucles fonctionnent...
Merci beaucoup l'ami.
;)
Mais quand tu me dit qu'il faut mettre les numeros de colonne, je dois les mettre comme ca : "colonne1"; "colonne2" etc ?

Merci en tout cas
 

Benjo

XLDnaute Junior
Re : Meme Macro qui differe selon une seule cellule

En fait, je confirme ca fonctionne tres bien,
mais maintenant si je veux corser le truc, en envoyant une msgbox au changement de feuille recapitulant le nom des intitulés (en l'occurence la colonne A des différentes lignes).

Comment puis je faire ?
 

suistrop

XLDnaute Impliqué
Re : Meme Macro qui differe selon une seule cellule

Ce lien n'existe plus

sinon une boucle pour les comprendre faut en faire !!!

for i = 1 to 5
total = total + i
next i

en gros si on la traduit en francais ca donne :

pour i allant de 1 a 5 , total = total + i

en gros il faut que tu résonne un peu comme ca :
je veux faire la meme chose pour les 300 ligne de mon tableau je tape mon programme pour la ligne 1 et vu que ca va etre la meme chose pour mes 300 autres ligne le 1 je le met en variable que j apelle i par exemple , et je fais une boucle , ma boucle va donc faire 300 fois sur des ligne différente ce que je voulais faire pour la ligne 1 !

simple non :)
 

Benjo

XLDnaute Junior
Re : Meme Macro qui differe selon une seule cellule

Tres bon le siteduzero ! merci ;)

En fait, ce que je voudrais, c'est que lorsque je change de feuille de mon classeur (je pars du principe que je suis dans feuille "recap stock" et que si mon stock par exemple de stylo vert est inferieur a 50, la cellule devient rouge pour me l'indiquer.
Et ce que je voudrais, c'est que si je change de feuille (je passe par exemple de la feuille "recap stock" à la la feuille "detail service compta", une msgbox m'indique que je dois acheter des stylos verts, des gommes, des ecrans etc. (uniquement les cellules qui seront devenues rouges).

J'essaie avec les boucles pour voir et je vous tiens au courant. ;)
 

Benjo

XLDnaute Junior
Re : Meme Macro qui differe selon une seule cellule

Non, je n'y arrive pas.

J'arrive a faire un msgbox qui affiche le numero de la ligne où il manque qqc, et si il manque à plusieur ligne, j'ai plusieurs msgbox...

Une idée pour m'aider ?
 

Benjo

XLDnaute Junior
Re : Meme Macro qui differe selon une seule cellule

ca avance, ca avance :D

J'arrive à avoir la msgbox qui affiche le nom de l'intitulé... le probleme c'est que je n'arrive pas à avoir une seule msgbox avec tous les intitulé en meme temps. (Imagine que sur les 300 il en manque 150 !)


Code:
Sub messagebis()
Dim x As String
For i = 2 To 10
If Cells(i, 1).Value < Cells(i, 2) Then
x = Cells(i, 4)
MsgBox ("il vous manque " & x)

End If
Next i
End Sub

Merci beaucoup :D
 

suistrop

XLDnaute Impliqué
Re : Meme Macro qui differe selon une seule cellule

hello,
peut etre comme ca meme si c est pas jolie


Code:
Sub messagebis()
Dim x As String
For i = 2 To 10
If Cells(i, 1).Value < Cells(i, 2) Then
x = Cells(i, 4)
all = all & " " & x
End If
Next i
MsgBox ("il vous manque " & all)
End Sub
le pbl c est que sur 300 article :(
il vaudrait peut mieux faire une feuille achat enfin apres je connais pas ton classeur...
 

Benjo

XLDnaute Junior
Re : Meme Macro qui differe selon une seule cellule

C'est top, ca marche niquel.
Je connaissais pas cette fonction all.

C'est possible de faire un saut de ligne entre chaque intitulé ?
Car en rajouter un vbcrlf, ca ne fonctionne pas...
Sinon, c'est fou, tu m'as aidé !
 

suistrop

XLDnaute Impliqué
Re : Meme Macro qui differe selon une seule cellule

C'est top, ca marche niquel.
Je connaissais pas cette fonction all.

C'est possible de faire un saut de ligne entre chaque intitulé ?
Car en rajouter un vbcrlf, ca ne fonctionne pas...
Sinon, c'est fou, tu m'as aidé !

all c est pas une fonction, c est un nom de variable
comme ton x :)
j aurai tres bien pu mettre toto = toto & x
le fait de mettre tata = tata & x
ca va rajouter x derriere tata puis quand on repasse ca réajoute x derriere tata a qui on a deja rajouter x , ca donne tata x x ....

tu vois le truc !

je vais manger .... bon courage
 

Benjo

XLDnaute Junior
Re : Meme Macro qui differe selon une seule cellule

Bon, donc ca fonctionne niquel,

j'ai pris ca comme code :

Code:
Private Sub Worksheet_Deactivate()
For i = 8 To 300
If Cells(i, 19).Value < Cells(i, 20) Then
x = Cells(i, 2)
all = all & " " & vbCrLf & x


End If
Next i
MsgBox ("Pensez à combler le stock des produits suivants: " & all)
End Sub

Le soucis, c'est que si la condition n'est pas respectée, la msgbox s'ouvre en étant vide.

ce que je voudrais, c'est donc rajouter un "else" juste avant le "end if" qui permettrait l'aller directement au "end sub"...
Je ne me souviens plus de la demarche : goto, ou end ou autre...

Can you help me ? :D
 

Statistiques des forums

Discussions
312 677
Messages
2 090 824
Membres
104 677
dernier inscrit
soufiane12