VBA-E - Appliquer macro à une colonne entière

Fermé
vba - 25 juin 2009 à 10:11
 vba - 26 juin 2009 à 13:23
Bonjour,
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 !
A voir également:

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
1
Fou_Du_Guidon Messages postés 320 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 9 juillet 2010 38
25 juin 2009 à 10:16
Bonjour, trés bonne question. je vais suivre le sujet. Peut-être que je me coucherai moi con.
0
Tydher Messages postés 123 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 17 mai 2011 6
25 juin 2009 à 10:31
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
0
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
0

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 !
entre
Private 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!
0
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.
0
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é
0
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 sub
Je ne fais pas très attention a ce que je colle.
Ça devrait être mieux, non?
0
Merci Lila ! encore une erreur, Erreur : "else sans if", je ne comprends pas pourtant il y a un if !
0
Vérifie bien que tu n'as rien oublié : If then
Else
End if
0
Je n'ai rien oublié, bisarre !
0
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?
0
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 ?
0
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.
0
Plus d'idée?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
26 juin 2009 à 11:34
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
0
Je viens de changer la plage jusqu'a 170, et ca ne fonctionne pas, pourtant le code à l'air fonctionnel !
merci.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
26 juin 2009 à 12:01
de rien.
Mon code a l'air fonctionnel
alors, pourquoi poses tu des questions ?
0
La syntaxe à l'air fonctionnelle
0
cependant l'action du code ne fonctionne pas. des idées?
0