Macro excel

Résolu/Fermé
zMaster_ Messages postés 5 Date d'inscription lundi 12 juillet 2021 Statut Membre Dernière intervention 15 juillet 2021 - 12 juil. 2021 à 20:08
zMaster_ Messages postés 5 Date d'inscription lundi 12 juillet 2021 Statut Membre Dernière intervention 15 juillet 2021 - 15 juil. 2021 à 18:12
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

yg_be Messages postés 20717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2022 1 260
12 juil. 2021 à 21:27
bonjour,
merci d'utiliser les balises de code, comme expliqué ici: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

tu n'as pas expliqué ce qui déclenchais ta macro.
0
Utilisateur anonyme
12 juil. 2021 à 21:46
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
zMaster_ Messages postés 5 Date d'inscription lundi 12 juillet 2021 Statut Membre Dernière intervention 15 juillet 2021
13 juil. 2021 à 19:57
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
yg_be Messages postés 20717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2022 1 260
13 juil. 2021 à 20:23
plutôt:
Sub test()
    If [H3] = 1 then
        impression_page1
    else
        impression_2pages
    End If
End Sub    
0
zMaster_ Messages postés 5 Date d'inscription lundi 12 juillet 2021 Statut Membre Dernière intervention 15 juillet 2021
14 juil. 2021 à 12:09
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
yg_be Messages postés 20717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2022 1 260
14 juil. 2021 à 12:56
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zMaster_ Messages postés 5 Date d'inscription lundi 12 juillet 2021 Statut Membre Dernière intervention 15 juillet 2021
Modifié le 14 juil. 2021 à 19:35
Ca me fait la même chose, il m'imprime les deux feuilles même si ma case est = 1
0
yg_be Messages postés 20717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2022 1 260
14 juil. 2021 à 23:35
Sub test()
    If sheets("???").[H3] = 1 then
        msgbox "une page"
        impression_page1
    else
        msgbox "deux pages"
        impression_2pages
    End If
End Sub 
0
zMaster_ Messages postés 5 Date d'inscription lundi 12 juillet 2021 Statut Membre Dernière intervention 15 juillet 2021
15 juil. 2021 à 18:12
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