Probleme selection sous VBA excel

J'ai un probleme de selection de lignes sur excel. En effet, j'ai créé une macro afin de colorier une selection de lignes mais lorsque je clique sur le bouton de commande il me renvoit une erreur : ce qui est normal puisque lorsque je clique sur le bouton de commande, la sélection prise en compte est le bouton de commande. J'aimerais remédier à ce problème.
Merci d'avance

10 réponses

  1. Bonjour,

    Copier votre macro ici, je vais vous aider à corriger le tire :-)

    Amicalement
    Lupin
    1. Private Sub couleur_Click()

      Colonne = 1

      If Cells(Selection.Row-1, Colonne).Interior.ColorIndex = 35 Then

      Selection.Interior.ColorIndex = 36

      Else

      Selection.Interior.ColorIndex = 35

      End If

      End Sub

      Voilà. Merci beaucoup
    2. Merci pour vos réponses,
      Je cherche mnt comment réaliser la chose suivante :
      apres mon THEN, j'aimerais que si la condition est remplie, le programme selectionne dans une autre page (Feuil5) une colonne de 4 cellules (qui dépendent de ma boucle : for i = ..........) et les mettre en forme (texte en gras, centré sur fond rouge)
      Le probleme que je rencontre réside dans la fonction RANGE ou dans la fonction SELECT (oui je pense avoir presque tout essayer --')
      voila ma ligne, savez vous ce qu'il ne va pas ..?

      CODE 1 :

      Sheets("ZONE").Select
      Range(Cells(1, i), Cells(4, i)).HorizontalAlignment = xlCenter

      CODE 2

      Feuil5.Range(Cells(1, i), Cells(4, i)).HorizontalAlignment = xlCenter

      CODE 3 :

      Sheets("ZONE").Select
      Range(Cells(1, i), Cells(4, i)).Select
      With Selection.Interior
      .ThemeColor = xlThemeColorAccent6
      .HorizontalAlignment = xlCenter
      .VerticalAlignment = xlCenter
      End With

      Encore merci a vous,
      A bientot
  2. Bonjour,

    Puisque cette routine est "Private" et d'après votre message, je comprends que la bouton est directement sur la feuille, est-ce bien cela ou le code est sous un "UserForm" ?

    Voilà la routine corrigé, si j'ai bien compris le but de l'expression "Selection.Row - 1".

    Private Sub Couleur_Click()

    If ActiveCell.Offset(-1, 0).Interior.ColorIndex = 35 Then
    ActiveCell.Offset(-1, 0).Interior.ColorIndex = 36
    Else
    ActiveCell.Offset(-1, 0).Interior.ColorIndex = 35
    End If

    End Sub

    Amicalement
    Lupin
    1. Oui le bouton est bien sur la feuille; je n'utilise pas de form.
      Merci encore
      1. re :

        Bienvenue

        Au fait, vous parlier de ligne à colorier :

        If ActiveCell.Offset(-1, 0).Interior.ColorIndex = 35 Then
        ActiveCell.Offset(-1, 0).EntireRow.Interior.ColorIndex = 36
        Else
        ActiveCell.Offset(-1, 0).EntireRow.Interior.ColorIndex = 35
        End If

        Amicalement
        Lupin
        1. j'ai fait un petit programme sous excel 97 avec vba
          avec baucoup de "for..next","Select case" , "dim a(1 to 68)"
          Mon programme a l'air nickel, mais j'ai un message d'erreur
          en cours d'execution "PROCEDURE TROP GRANDE"
          Pouvez-vous m'aider sur le message?
          Merci d'avance.
          1. Bonjour,

            Pour ce faire, il vous faut copier votre procédure ici !!!

            Malheureusement, je ne suis pas devin :-)

            Il vous suffirais probablement de découper votre
            procédure en petite fonction.

            Lupin
            1. Bonjour,

              J'ai une macro qui fonctionne bien pour remplacer les cellules vides par le chiffre 0 une fois que la zone est définie (dans l'exemple ci-dessous zone définie et nommée "ville"). Est-il possible que cette macro fonctionne sur une zone non définie à l'avance. C'est - à dire, j'ouvre ma feuille excel, je sélectionne une zone et je clique sur ma macro pourqu'elle remplace tous les cellules vides par zéro.
              Quelles sont les modifs effectuer sur la macro suivante au niveau de la définition de la variable Range :

              Sub zero1()
              For Each c In Range("ville")
              If c.Value = "" Then
              c.Value = 0
              End If
              Next
              End Sub

              Merci de m'aider ;-)
              Céline
              1. Contributeur
                Bonjour,

                Bien sûr, tu remplaces par 'for each c in selection'
                eric
                1. Bonjour Eric,
                  Merci bcp ! CA fct tb.
              2. Contributeur
                De rien...
                Pense à mettre résolu ;-)
                Bonne soirée
                eric
                1. Oup's... impossible de trouver comment mettre à 'résolu'? T'as une idée?
                  C'est la première fois que je poste sur ce forum ;-)

                  Céline
              3. Contributeur
                Bonsoir,
                Il parait qu'il faut cliquer sur 'voir mes interventions' , sélectionner la question et en haut il y a tout ce qu'il faut pour changer le statut
                eric