Macro excel

Résolu
zMaster_ Messages postés 5 Statut Membre -  
zMaster_ Messages postés 5 Statut Membre -
Bonjour à tous.

Je n'ai aucune connaissance des macros et j'ai chercher mon problème sur les forums sans trouver réponse à mon problème, c'est pour cela que je le pose ici.

J'ai essayer de créer une macro me permettant d'imprimer ma première feuille qui sera toujours imprimer et ma deuxième feuille qui sera imprimer SEULEMENT s'il y a quelque chose d'inscrit dans la case des observations.


J'ai essayer de créer quelque chose comme ceci : observation = vide alors la case H3 = 1 sinon = 2 et de créer une macro découlant de ceci.

Sub test()
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
If IsNumeric(Target) And Target.Address = "$H$3" Then
Select Case Target.Value
Case Is = 1: impression_page1
Case Is = 2: impression_2pages
End Select
End If
End Sub

Avec cette macro il m'affiche un message d'erreur :
Erreur de compilation : End sub attendu

J'ai enregistrer mes 2 macros d'impression à la main : impressions_page1 & impressions_2pages

Je vous remercie d'avance pour votre aide,
Cordialement.

6 réponses

  1. Utilisateur anonyme
     
    Bonsoir,

    Sub test()
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)


    En VBA, on ne peut pas déclarer une Sub dans une autre et si c'était possible, il manquerait un End Sub pour faire l'affaire.
    0
  2. zMaster_ Messages postés 5 Statut Membre
     
    Bonjour,

    Pour ce qui déclenche ma macro, c'est un bouton que j'ai sur ma première feuille.


    J'ai enlever la ligne, ce qui me donne

    Sub test()
        If Target.Cells.Count > 1 Then Exit Sub
        If IsNumeric(Target) And Target.Address = "$H$3" Then
            Select Case Target.Value
            Case Is = 1: impression_page1
            Case Is = 2: impression_2pages
            End Select
        End If
    End Sub


    En faisait ceci, il m'affiche une erreur d'exécution '424'
    Objet requis.
    Il m'affiche en jaune la première ligne, est-ce qu'il me manque une sélection de case ou quelque chose comme ça ?

    J'ai reprit l'ensemble de code sur un autre forum et j'ai essayer de le modifier pour l'adapter à ce que je cherche.

    Merci d'avance,
    Cordialement
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      plutôt:
      Sub test()
          If [H3] = 1 then
              impression_page1
          else
              impression_2pages
          End If
      End Sub    
      0
  3. zMaster_ Messages postés 5 Statut Membre
     
    Bonjour,

    J'ai essayé votre macro, elle fonctionne mais elle m'imprime les 2 pages même si ma case H3 et = 1 .
    J'ai essayé de la modifier comme ceci
    Sub test()
        If [H3] = "" Then
            impression_page1
        Else
            impression_2pages
        End If
    End Sub

    Mais même comme ceci elle m'imprime les 2 pages.

    J'ai aussi essayé
    Sub Final()
            If [H3] = 1 Then
                impression_page1
            Else: [H3] = 2
                impression_2pages
            End If
    End Sub


    J'ai modifier avec 2 bloc If mais même avec un second bloc End If, la macro ne fonctionne pas.

    C'est comme s'il ne prenait pas ma contrainte en compte.

    J'ai aussi pensé à inclure ma deuxième feuille sur la première, je ne sais pas si ceci aura une influence ou que ce soit plus simple.

    Merci d'avance,
    Cordialement.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peut-être préciser le nom de la feuille où se trouve H3:
      Sub test()
          If sheets("???").[H3] = 1 then
              impression_page1
          else
              impression_2pages
          End If
      End Sub 
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. zMaster_ Messages postés 5 Statut Membre
     
    Ca me fait la même chose, il m'imprime les deux feuilles même si ma case est = 1
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Sub test()
          If sheets("???").[H3] = 1 then
              msgbox "une page"
              impression_page1
          else
              msgbox "deux pages"
              impression_2pages
          End If
      End Sub 
      0
  6. zMaster_ Messages postés 5 Statut Membre
     
    Bonjour,

    Je vous remercie yg_be de votre aide et d'avoir prit le temps de m'aider, votre solution fonctionne !
    Avec le msgbox, il prend en compte ma contrainte.

    Je peut clore le sujet.

    Cordialement.
    0