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

vba -  
 vba -
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 !

20 réponses

  1. Lila_35
     
    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
  2. Fou_Du_Guidon Messages postés 347 Statut Membre 38
     
    Bonjour, trés bonne question. je vais suivre le sujet. Peut-être que je me coucherai moi con.
    0
  3. Tydher Messages postés 127 Statut Membre 6
     
    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
  4. vba
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. vba
     
    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
  7. Lila_35
     
    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
  8. Lila_35
     
    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
  9. Lila_35
     
    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
  10. vba
     
    Merci Lila ! encore une erreur, Erreur : "else sans if", je ne comprends pas pourtant il y a un if !
    0
  11. Lila_35
     
    Vérifie bien que tu n'as rien oublié : If then
    Else
    End if
    0
  12. vba
     
    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
  13. Lila_35
     
    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
  14. vba
     
    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
  15. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  16. vba
     
    Je viens de changer la plage jusqu'a 170, et ca ne fonctionne pas, pourtant le code à l'air fonctionnel !
    merci.
    0
  17. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    de rien.
    Mon code a l'air fonctionnel
    alors, pourquoi poses tu des questions ?
    0
  18. vba
     
    cependant l'action du code ne fonctionne pas. des idées?
    0