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. 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
    1. http://www.cijoint.fr/cjlink.php?file=cj201101/cijPTvKomw.xlsm
      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. 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
            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. C'est bon: http://www.cijoint.fr/cjlink.php?file=cj201101/cijWCkSum4.xlsx
              0
              1. j'ai essayé d'envoyer le fichier mais "ci-joint.fr" ne fonctionne pas.
                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. 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
                      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. 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
                          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. 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
                              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. 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
                                  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. 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
                                      Bonjour,
                                      Montre déjà le code que tu a fait et qui va pas.
                                      A+
                                      0