Macro de condition dans excel

Résolu
JBtheDarkman Messages postés 19 Statut Membre -  
JBtheDarkman Messages postés 19 Statut Membre -
Bonjour,

J'ai de nouveau un petit problème.

Je voudrais choisir une d'ouvrir une feuille de calcul ou un autre en fonction du résultat d'une cellule.

Voici l'exemple: Si D8 = ToTo ouvre feuil2
si elle n'égale pas toto ouvre feuil3

Voici ma première ligne de code mais je sais pas comment la terminé.
Application.ScreenUpdating = False

If Range("D8").Value = "Allo" Then
Application.ActivePrinter = "Wasp WPL-305 sur Ne01:"
Sheets("Étiquette Date").PrintOut Copies:=Sheets("Étiquette Date").Range("E2")

If Not "Allo"

Merci de votre aide précieuse.

5 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour

    peut etre quelque chose qui ressemble à ça

    If Range("D8").Value = "toto" Then
    Sheets("Feuil2").Select
    Else
    Sheets("Feuil3").Select
    End If

    bonne suite
    0
  2. JBtheDarkman Messages postés 19 Statut Membre
     
    J'ai essayé la ligne de code, mais j'ai toujours l'erreur Block if sans end if.
    Je vais mettre la ligne de code au complet, peut-être pourrais tu voir l'erreur.
    Merci pour ta réponse extrêmement rapide.

    Private Sub CommandButton2_Click()
    '
    Application.ScreenUpdating = False

    If Range("D8")= "ToTo" Then

    Application.ActivePrinter = "Wasp WPL-305 sur Ne01:"
    Sheets("Étiquette Date").PrintOut Copies:=Sheets("Étiquette Date").Range("E2")

    Else

    ' Parcourt les Feuilles de la 1ème à la dernière
    For sh = 1 To Sheets.Count
    With Sheets(sh).Range("d1")
    ' recherche la valeur située en 'D8' sur la première feuille
    Set t = .Find(Sheets("Choix").Range("D8").Value, LookIn:=xlValues)
    If Not t Is Nothing Then
    ' Si la valeur est trouvée, alors
    ' Active la feuille contenant cette valeur
    Sheets(sh).Activate
    ' Récupère l'adresse de la cellule trouvée et la selectionne
    'Nom du Client
    .Range("B1").Offset(0, -3).Copy Destination:=Sheets("Étiquette Pièce").Range("B1:E1")
    'Numero de la piece
    .Range("B3").Offset(0, -3).Copy Destination:=Sheets("Étiquette Pièce").Range("B5:E5")
    'Description de la piece
    .Range("B5").Offset(0, -3).Copy Destination:=Sheets("Étiquette Pièce").Range("B3:E3")

    Sheets("Étiquette Pièce").Select
    '

    '
    Application.ActivePrinter = "Wasp WPL-305 sur Ne01:"
    Sheets("Étiquette Pièce").PrintOut Copies:=Sheets("Étiquette Pièce").Range("G6")

    Sheets("Choix").Select
    Exit Sub

    End If

    End With

    Next
    Application.ScreenUpdating = True
    End Sub

    Merci encore de ton aide.
    0
  3. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonsoir,
    Au passage, il manque un [End If] entre [Next] et [Application.ScreenUpdating = True]
    0
    1. JBtheDarkman Messages postés 19 Statut Membre
       
      Merci j'ai une autre question, si j'aurais plusieur choix de toto

      exemple toto - 1
      toto - 2

      Comment écrirais tu cette ligne pour que tout ce qui commence par toto soit pris en compte sans être oubligé de toutes les nommé?

      If Range("D8")= "ToTo" Then

      Merci parce que ta dernière réponse a réglé une partit de mon problème.
      0
  4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    If left( Range("D8"),4) = "ToTo" Then

    prend en compte tous les ToTo
    0
    1. JBtheDarkman Messages postés 19 Statut Membre
       
      Merci bginforme, mais ça ne fonctionne pas.
      Peux-etre que l'erreur vient du fait que Toto-1 est incris dans la case d8?
      As-tu une idée?
      0
    2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      Tu as le pourquoi dans ta réponse (Toto-1 ) et ccm81 te donnes la parade.

      Lorsque l'on a des saisies imprécises faut faire avec mais c'est plus complexe.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    re

    la proposition de bginforme est correcte
    est ce que tu as bien respecté la casse (majuscule/minuscule) dans l'écriture de tes toto(s)
    pour eviter ces pb de casse tu peux mettre

    If left(UCase(Range("D8")),4)= "TOTO" Then

    bonne suite
    0
    1. JBtheDarkman Messages postés 19 Statut Membre
       
      Merci a vous deux.
      je n'avais pas remaqué mon erreur de frappe
      Votre aide m'a été précieuse.
      0