[VBE]executer macro sur plage

missExcel -  
 MissExcel -
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

  1. wida Messages postés 170 Statut Membre 17
     
    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
    0
  2. missExcel
     
    Bonjour ! ca ne marche pa dommage
    erreur définit par l'application ou par l'objet erreur 1004 !
    tu c comment je peu faire?
    0
  3. wida Messages postés 170 Statut Membre 17
     
    il faudrai initialiser le i =1 avant la boucle
    c peut etre du à ça!!
    0
  4. MissExcel
     
    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!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. wida Messages postés 170 Statut Membre 17
     
    Bonjour,
    je comprends pas trop le but de ta macro
    mais essay de faire la pas a pas pour voir quel cellule pose probleme,
    0
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  8. MissExcel
     
    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 !
    0
  9. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  10. MissExcel
     
    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 !
    0