VBA

Résolu
Bonjour,

J'ai un problème d'utilisation VBA
En effet je veux passer d'une page à une autre suivant la valeur d'une cellule, par exemple:
Si c6= P31003 alors aller sur la page 2 en b43 et la colorier en rouge et pour chaque valeur une place différente sur des pages différentes.
J'ai essayé avec la fonction "if...then...else" mais cela ne fonctionne pas ou du moins cela colorie toutes les cases programmées (ce que je ne veux pas)
Merci

18 réponses

  1. Contributeur
    Bonjour,
    Montre déjà le code que tu a fait et qui va pas.
    A+
    0
    1. Voici le code pour deux références:

      Sub Macro1()
      '
      ' Macro1 Macro
      '

      '
      If c6 = P31003 Then
      Sheets("N-1").Select
      Range("P6").Select
      With Selection.Interior
      .Pattern = xlSolid
      .PatternColorIndex = xlAutomatic
      .Color = 255
      .TintAndShade = 0
      .PatternTintAndShade = 0

      End With

      Else

      If c6 = P31004 Then
      Sheets("N-1").Select
      Range("P8").Select

      With Selection.Interior
      .Pattern = xlSolid
      .PatternColorIndex = xlAutomatic
      .Color = 255
      .TintAndShade = 0
      .PatternTintAndShade = 0
      End With

      Else

      If c6 = P31005 Then
      Sheets("N-1").Select
      Range("P9").Select

      With Selection.Interior
      .Pattern = xlSolid
      .PatternColorIndex = xlAutomatic
      .Color = 255
      .TintAndShade = 0
      .PatternTintAndShade = 0

      End With

      End If

      End If
      End If

      End Sub
      0
      1. Contributeur
        1°) Dans un If il ne peu y avoir qu'un seul Else, tu aurais pu faire..
            If c6 = P31003 Then   
            '...   
            ElseIf c6 = P31004 Then   
            '...   
            ElseIf c6 = P31005 Then   
            '....   
            End If

        Mais y a beaucoups plus simple..
        Sub Macro1()   
        Dim Cel As Range   
            Select Case c6   
            Case "P31003": Cel = Range("P6")   
            Case "P31004": Cel = Range("P8")   
            Case "P31005": Cel = Range("P9")   
            End Select   
            Sheets("N-1").Cel.Interior.ColorIndex = 3   
        End Sub

        Encore plus simple ?
        Sub Macro2  
            Sheets("N-1").Range("P" & IIf(CInt(Right(c3, 1)) = 5, 9, CInt(Right(c3, 1)) * 2)).Interior.ColorIndex = 3  
        End Sub  

        A+
        L'expérience instruit plus sûrement que le conseil. (André Gide)
        Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
        0
        1. Bonjour,

          Merci pour toutes ces précisions
          J'ai essayé avec le 1er code donné:

          Sub Macro1()
          '
          ' Macro1 Macro
          '

          '
          If c6 = P31003 Then
          Sheets("N-1").Select
          Range("P6").Select
          With Selection.Interior
          .Pattern = xlSolid
          .PatternColorIndex = xlAutomatic
          .Color = 255
          .TintAndShade = 0
          .PatternTintAndShade = 0

          Elself c6 = P31004
          Sheets("N-1").Select
          Range("P8").Select

          With Selection.Interior
          .Pattern = xlSolid
          .PatternColorIndex = xlAutomatic
          .Color = 255
          .TintAndShade = 0
          .PatternTintAndShade = 0
          End With

          Elself c6 = P31005
          Sheets("N-1").Select
          Range("P9").Select

          With Selection.Interior
          .Pattern = xlSolid
          .PatternColorIndex = xlAutomatic
          .Color = 255
          .TintAndShade = 0
          .PatternTintAndShade = 0

          End With

          End If

          End Sub

          Hélas un message d'erreur apparait: sub ou function non défini...
          0
          1. Contributeur
            Elself c6 = P31004 Then

            Elself c6 = P31005 Then

            Les lignes ci-dessous ne sont pas nécessaires.
            Pattern = xlSolid 
            .PatternColorIndex = xlAutomatic 
            .TintAndShade = 0 
            .PatternTintAndShade = 0 


            Et je me demande bien pourquoi tu prend pas l'exemple plus simple..
            0
            1. J'ai pris ce code parce que je ne comprends pas "le plus simple" (malheureusement)
              Par contre, il manque quelques chose après le "then" car il ne veut pas me le prendre:

              Sub Macro1()
              '
              ' Macro1 Macro
              '

              '
              If c6 = P31003 Then
              Sheets("N-1").Select
              Range("P6").Select

              Elself c6 = P31004 Then
              Sheets("N-1").Select
              Range("P8").Select

              Elself c6 = P31005 Then
              Sheets("N-1").Select
              Range("P9").Select

              End If

              End Sub

              Erreur: fin d'instruction attendu avec les "then" en rouge
              0
              1. Contributeur
                la variable c6 est un string (vu qu'il y a une lettre dedans.
                Donc tu dois comparer Un String AVEC un string
                    If c6 = "P31003" Then 

                Ajouter les guillements.

                et c'est un I (de Isidore)
                ElseIf
                L'expérience instruit plus sûrement que le conseil. (André Gide)
                Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                0
                1. Bon...plus d'erreur seulement maintenant ma macro ne fonctionne pas. elle ne me renvoie pas à l'endroit désiré, il y a juste un scintillement et c'est tout :-S
                  Étant donné que j'ai une liste déroulante en "c6",cela est-il gênant?
                  0
                  1. Contributeur
                    Grrr.. C6 c'est une cellule ?
                    Ta liste déroulante c'est quoi Un combobox, un filtre automatique .. ?
                    Malheureux qu'y faut chaque fois vous EXTIRPER les renseignements....
                    EDIT : Le plus simple, si ton classeur n'a pas de données confidentielle poste le ou alors un classeur modèle avec des données aléatoire.
                    Sur CiJoint.fr et mettre le lien dans un poste suivant.

                    L'expérience instruit plus sûrement que le conseil. (André Gide)
                    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                    0
                    1. C6 est une cellule dans laquelle: soit on tape le code que l'on connait, soit l'on cherche le code dans la liste parmi les 1163 codes existant.
                      Cette liste je l'ai créée via l'onglet "données" dans "validation de données"
                      0
                      1. Contributeur
                            if Sheets("NomFeuille").Range("C6") = "P31003" Then 

                        ou..
                        Dim C6 as string
                            C6 = Sheets("NomFeuille").Range("C6") .value

                        Alors tu dois rien changer dans tes If

                        Sans préjuger du résultat.
                        De plus, ça ne va marcher qu'avec tes 3 codes et comme tu dis que tu en a 1163 ????
                        Faudra avoir une autre solution.

                        L'expérience instruit plus sûrement que le conseil. (André Gide)
                        Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                        0
                        1. j'ai essayé d'envoyer le fichier mais "ci-joint.fr" ne fonctionne pas.
                          0
                          1. C'est bon: http://www.cijoint.fr/cjlink.php?file=cj201101/cijWCkSum4.xlsx
                            0
                            1. Contributeur
                              Bon, beh tu sais ce que tu va faire...
                              Tu télécharge ton fichier XLM et tu l'ouvre dans excel, ensuite tu me dis comment tu fait pour l'ouvrir
                              0
                              1. clique sur le lien puis clic sur recherche GMAOtest3.Ensuite le fichier s'ouvre normalement sous excel.je n'ai pas enregistré la partie macro pour éviter les incompatibilités mais l'on a déjà nommé les 3 premiers codes:

                                Sub Macro1()
                                '
                                ' Macro1 Macro
                                '

                                '
                                If c6 = "P31003" Then
                                Sheets("N-1").Select
                                Range("P6").Select

                                ElseIf c6 = "P31004" Then
                                Sheets("N-1").Select
                                Range("P8").Select

                                ElseIf c6 = "P31005" Then
                                Sheets("N-1").Select
                                Range("P9").Select

                                End If

                                End Sub
                                0
                                1. Contributeur
                                  Tu n'a pas fait ce que je t'ai demander...
                                  TELECHERGER ton classeur.. tout est en XLM et pas de GMAOtest3
                                  De plus, ont est occuper sur des macros et tu sauve SANS MACRO, c'est quoi ta réflexion.
                                  Je sens que... ..... ça commence tout doucement à m'énerver
                                  L'expérience instruit plus sûrement que le conseil. (André Gide)
                                  Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                                  0
                                  1. http://www.cijoint.fr/cjlink.php?file=cj201101/cijPTvKomw.xlsm
                                    0
                                    1. C'est bon problème résolu, et c'est totalement différent par rapport à ce qu'on a pu aborder...
                                      Merci du coup de main quand même...et de la patience!
                                      0