VBA

Résolu
Jer -  
 Jer -
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. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Montre déjà le code que tu a fait et qui va pas.
    A+
    0
  2. Jer
     
    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
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  4. Jer
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  7. Jer
     
    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
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  9. Jer
     
    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
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  11. Jer
     
    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
  12. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
        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
  13. Jer
     
    j'ai essayé d'envoyer le fichier mais "ci-joint.fr" ne fonctionne pas.
    0
  14. Jer
     
    C'est bon: http://www.cijoint.fr/cjlink.php?file=cj201101/cijWCkSum4.xlsx
    0
  15. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  16. Jer
     
    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
  17. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  18. Jer
     
    http://www.cijoint.fr/cjlink.php?file=cj201101/cijPTvKomw.xlsm
    0
  19. Jer
     
    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