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

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. 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
    1. Bonjour, trés bonne question. je vais suivre le sujet. Peut-être que je me coucherai moi con.
      0
      1. 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
        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
          0
          1. 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
            1. 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
              1. 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
                1. 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
                  1. Merci Lila ! encore une erreur, Erreur : "else sans if", je ne comprends pas pourtant il y a un if !
                    0
                    1. Vérifie bien que tu n'as rien oublié : If then
                      Else
                      End if
                      0
                      1. 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
                        1. 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
                          1. 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
                            1. Contributeur
                              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
                              1. Je viens de changer la plage jusqu'a 170, et ca ne fonctionne pas, pourtant le code à l'air fonctionnel !
                                merci.
                                0
                                1. Contributeur
                                  de rien.
                                  Mon code a l'air fonctionnel
                                  alors, pourquoi poses tu des questions ?
                                  0
                                  1. cependant l'action du code ne fonctionne pas. des idées?
                                    0