Macro excel [Résolu]

Signaler
Messages postés
5
Date d'inscription
lundi 12 juillet 2021
Statut
Membre
Dernière intervention
15 juillet 2021
-
Messages postés
5
Date d'inscription
lundi 12 juillet 2021
Statut
Membre
Dernière intervention
15 juillet 2021
-
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

Messages postés
16448
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 juillet 2021
880
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.
Messages postés
425
Date d'inscription
samedi 7 novembre 2020
Statut
Membre
Dernière intervention
17 juillet 2021
82
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.
Messages postés
5
Date d'inscription
lundi 12 juillet 2021
Statut
Membre
Dernière intervention
15 juillet 2021

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
Messages postés
16448
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 juillet 2021
880
plutôt:
Sub test()
    If [H3] = 1 then
        impression_page1
    else
        impression_2pages
    End If
End Sub    
Messages postés
5
Date d'inscription
lundi 12 juillet 2021
Statut
Membre
Dernière intervention
15 juillet 2021

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.
Messages postés
16448
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 juillet 2021
880
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 
Messages postés
5
Date d'inscription
lundi 12 juillet 2021
Statut
Membre
Dernière intervention
15 juillet 2021

Ca me fait la même chose, il m'imprime les deux feuilles même si ma case est = 1
Messages postés
16448
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 juillet 2021
880
Sub test()
    If sheets("???").[H3] = 1 then
        msgbox "une page"
        impression_page1
    else
        msgbox "deux pages"
        impression_2pages
    End If
End Sub 
Messages postés
5
Date d'inscription
lundi 12 juillet 2021
Statut
Membre
Dernière intervention
15 juillet 2021

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.