[VBE]executer macro sur plage

Bonjour,
je suis secrétaire et g fait une macro mais qui ne sapplique que sur 1 seule ligne, je voudrai que la macro soit valable sur toutes les lignes de ma feuille. J'ai pensé à EntireColumn.select mais ca marche pa.donc je pensai faire une plage [A1:Z65535] ?
Ma macro :

Private sub macro1()
If range("a1").value = "ordinateur de bureau" then range("b2").value="OK"
End if
End sub
merci de m'aider !

9 réponses

  • Votes
  • Date
  • Date décroissante
  1. tu peux mettre une boucle:

    Private sub macro1()
    dim i as Long
    while (i<65565) ' tu met le nombre de tes lignes
    If range("a" & i).value = "ordinateur de bureau" then range("b2").value="OK"
    End if
    i=i+1
    Wend
    End sub
    1. Bonjour ! ca ne marche pa dommage
      erreur définit par l'application ou par l'objet erreur 1004 !
      tu c comment je peu faire?
      1. il faudrai initialiser le i =1 avant la boucle
        c peut etre du à ça!!
        1. Bonjour,
          il ny a plus ce mssage derreur mais il y en a 1 autre : "La méthode "range" de l'objet "_global" a échoué.
          Sub Macro1()
          
          Dim i As Long
          i = 1
          While (i < 65565) 
          
          If Range("a" & i).Value = "test" Then Range("b1").Value = Ok
          end if
          i = i + 1
          Wend
          
          End Sub
          le pb vient d'ou? merci!
          1. Bonjour,
            je comprends pas trop le but de ta macro
            mais essay de faire la pas a pas pour voir quel cellule pose probleme,
            1. Contributeur
              Bonjour,

              si ton but est de voir si une chaine est présente en colonne A pas besoin de macro. En B1 tu mets :
              =SI(NB.SI(A:A;"=test")>0;"ok";"")

              Si ton but est de mettre ok sur toutes les lignes où est présente la chaine test (car on ne sait tjs pas ce que tu veux exactement...) alors :
              =SI(A1="test";"ok";"")
              à recopier vers le bas

              eric
              1. Bonjour,
                le problème c'est que j'ai atteint le maximum de mise en forme conditionnelle.
                Je l'ai donc coder, mais ma macro est du type :
                If Range("O160") <> "" Then
                
                Range("M160").Interior.Color = RGB(51, 51, 255)
                Else: Range("M160").Interior.Color = RGB(255, 255, 255)
                End If

                Comment faire pour faire quelque chose du type :

                If Range("O") <> "" Then
                
                Range("M").Interior.Color = RGB(51, 51, 255)
                Else: Range("M").Interior.Color = RGB(255, 255, 255)
                End If

                Merci !
                1. Contributeur
                  Bonjour,

                  heuuuu, ça n'a plus rien à voir du tout avec ta demande initiale...
                  Tu as changé ton fusil d'épaule ou bien c'est une nouvelle demande ?
                  Car dans un cas tu recherches une chaine précise pour mettre ok dans une cellule, dans l'autre n'importe quelle saisie te colorie une autre cellule

                  Si tu veux bien décrire précisement ce que tu souhaites et quel est ton but stp

                  En attendant voici un exemple pour balayer la colonne O en se limitant à la dernière cellule avec saisie :
                      For i = 1 To [O65536].End(xlUp).Row
                          If Cells(i, "O") <> "" Then
                              ' ton traitement
                          End If
                      Next i


                  eric
                  1. J'ai plusieurs colonnes, dans un de mes tests, j'ai une colonne O et une colonne L.
                    Je voudrais, lorsque on entre une donnée dans O (nimporte quelle cellule, la 7ieme ou la 54321ieme) si la cellule de la collone L n'est pas rempli, elle devient bleu.

                    Donc si j'entre une donnée dans "O54321", "L54321" devient bleu si il n'y a aucune donné dedans.

                    Pareil dans l'autre sens, si L remplit, O bleu si vide.

                    Merci de m'aider !