VBA-E - Appliquer macro à une colonne entière
vba
-
vba -
vba -
Bonjour,
j'ai une ligne de code qui se présente comme ca
Comment appliquer une macro non pas seulement à O160 mais à toute la colonne O ?
Merci !
j'ai une ligne de code qui se présente comme ca
If Range("N160") <> "" Then
Comment appliquer une macro non pas seulement à O160 mais à toute la colonne O ?
Merci !
20 réponses
-
Bonjour,
Essaie ça :Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("O1:O160")) Is Nothing Then: Exit Sub Application.Run "'" & Excel.ActiveWorkbook.Path & "\Monfichier.xls'!MaMacro" End Sub
Ça execute la macro quand on change de valeur dans une colonne. Il faudra l'adapter.
l'info vient de michel_m.
Bon courage -
Bonjour, trés bonne question. je vais suivre le sujet. Peut-être que je me coucherai moi con.
-
En gros tu veux faire une macro pour toute la colonne O.
Si elle part du 0160 et quelle continue jusqu'a 01000 par exemple il faudrait que tu fasse une boucle qui test si la case du dessous est vide, si c'est le cas la macro s'applique.
Si la colonne O va de O1 à o160 ou plus, tu effectue le meme test
Par exemple avec un compteur :
k = 1
While (Cells(k, 1).Value <> "")
ta macro
...
k = k + 1 -
Comme ceci ?Ca ne fonctionne pas, je n'ai pas du comprendre !
Private Sub Worksheet_SelectionChange(ByVal Target As Range) k = 1 While (Cells(k, 1).Value <> "") If Range("L160") <> "" Then Range("M160").Interior.Color = RGB(51, 51, 255) k = k + 1 Else: Range("M160").Interior.Color = RGB(255, 255, 255) End If wend end sub -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Il me trouve une erreur lors de l'execution de ton code Lila_35 !
J'ai aussi un conflit entre 2 conditions !
entrePrivate Sub Worksheet_Change(ByVal Target As Range) If Range("M160") <> "" Then Range("L160").Interior.Color = RGB(33, 33, 255) Else: Range("L160").Interior.Color = RGB(48, 48, 255)
et
If Range("O160") <> "" Then Range("L160").Interior.Color = RGB(51, 51, 255) Else: Range("L160").Interior.Color = RGB(255, 255, 255)
Selon que je place une macro ou l'autre en premier, une seule marche, il y a un conflit !
Il faudrait que je change la procédure d'une des macros ! mais qu'elle ressemble quand même àPrivate Sub Worksheet_Change(ByVal Target As Range)
merci! -
Le nom de ta sub d'origine était différent essaie les différents
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("M1:LM160")) Is Nothing Then: Exit Sub Range("L160").Interior.Color = RGB(33, 33, 255) Else: Range("L160").Interior.Color = RGB(48, 48, 255) end sub
C'est le Intersect(Target, Range("ta colonne")) qui marche bien. -
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("M1:M160")) Is Nothing Then: Exit Sub Range("L160").Interior.Color = RGB(33, 33, 255) Else: Range("L160").Interior.Color = RGB(48, 48, 255) end sub
Désolé -
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("M1:M160")) Is Nothing Then: Exit Sub Range("L160").Interior.Color = RGB(33, 33, 255) Else Range("L160").Interior.Color = RGB(48, 48, 255) ENd if end subJe ne fais pas très attention a ce que je colle.
Ça devrait être mieux, non? -
Merci Lila ! encore une erreur, Erreur : "else sans if", je ne comprends pas pourtant il y a un if !
-
-
-
Plus d'erreur, j'ai fai un retour à la ligne après then.
Mais le code ne fonctionne pas, je me place a M170 et la macro ne colorit pas la colonne L.
Une idée? -
Peux tu exposer un petit peu plus la fonctionnalité que tu souhait mettre en place?
Que se passe t il dans la colonne M et L ? -
Si n'importe qu'elle cellule de la colonne M est remplit alors la cellule de la même ligne de la colonne L se met de couleur bleu, si on efface la cellule M, L redevient blanc.
Et si on entre un caractère dans L, M devient bleu, si on efface la donné dans L, M redevient blanc. -
-
bonjour,
bien que je fasse des codes non fonctionnels ( ton message du 11/6)
si tu disais exactement ce que tu désirais? pour l'instant que tu changes une valeur dans M1:160 tu change la couleur dans L160 et que L160...
quand tu es dans M170 ça réagit pas puisque ta plage d'action est M1:M160...
donc -
Je viens de changer la plage jusqu'a 170, et ca ne fonctionne pas, pourtant le code à l'air fonctionnel !
merci. -
de rien.
Mon code a l'air fonctionnel
alors, pourquoi poses tu des questions ? -
-