Macro de condition dans excel

Résolu
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. 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
    1. 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
      1. Bonsoir,
        Au passage, il manque un [End If] entre [Next] et [Application.ScreenUpdating = True]
        0
        1. 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
      2. Contributeur
        bonjour

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

        prend en compte tous les ToTo
        0
        1. 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. Contributeur
          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
      3. 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. Merci a vous deux.
          je n'avais pas remaqué mon erreur de frappe
          Votre aide m'a été précieuse.
          0