Imprimer un USF multipage

  • Initiateur de la discussion Initiateur de la discussion creolia
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Re : Imprimer un USF multipage

Re,

Option explicit n'a rien à voir dans ton souci, elle permet seulement de définir les variables et leur implication en terme de mémoire par exemple. Elle permet aussi de voir ce que l'on a oublié en terme de déclaration.......

Supprime cette instruction dans tout tes modules, Feuille, Classeur et modules divers, Usf(s) aussi.
 
Re : Imprimer un USF multipage

et bien voila mon de que j'utilise grace a une personne ici
comme tu peut voir il dépent de option explicit


Code:
Option Explicit
 
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _
                                               ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
' Fait appel à une API qui permet de simuler les frappes au clavier;
'bscan qui permet d'utiliser certaines touches spéciales nous intéresse particulièrement ici,
'si sa valeur est 1, on fait référence à la copie d'écran,
'si elle est à 0, on fait référence à la forme active => ce qui est le cas ici.
 
Private Sub cmdImpfiche_Click()
Dim objFeuilPass As Worksheet
 
mulFicheOnglet.Value = 0 ' on donne le focus à l'onglet voulu, 1ère page = 0
Me.Repaint 'La méthode Repaint est utile si le contenu ou l'aspect d'un objet change
        'de façon significative, et si vous ne voulez pas attendre que le système redessine automatiquement la zone.
        'indispensable ici, sinon l'USF n'est pas rafraîchi assez vite.
keybd_event vbKeySnapshot, 1, 0&, 0& ' capture de l'USF
DoEvents 'permet de donner le temps à l'image d'être chargée / mémoire
Sheets.Add.Name = "PassImp"  'on ajoute une feuille temporaire au classeur
Set objFeuilPass = Sheets("PassImp")
objFeuilPass.Paste  ' on copie notre Snapshot
With objFeuilPass.Shapes(1)  'on redimetionne l'image à volonté
    .Top = 3
    .Left = 10
    .Height = 390
    .Width = 448
End With
mulFicheOnglet.Value = 1 'on passe à l'onglet suivant...
Me.Repaint
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
objFeuilPass.Paste
With objFeuilPass.Shapes(2)
    .Top = 391
    .Left = 10
    .Height = 390
    .Width = 448
End With
mulFicheOnglet.Value = 2 ' etc...
Me.Repaint
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
objFeuilPass.Paste
With objFeuilPass.Shapes(3)
    .Top = 815
    .Left = 10
    .Height = 390
    .Width = 448
End With
With objFeuilPass.PageSetup 'on met en forme nos paramètres d'impression
        .LeftMargin = Application.InchesToPoints(0.35)
        .RightMargin = Application.InchesToPoints(0.35)
        .TopMargin = Application.InchesToPoints(0.56)
        .BottomMargin = Application.InchesToPoints(0.53)
        .HeaderMargin = Application.InchesToPoints(0.32)
        .FooterMargin = Application.InchesToPoints(0.39)
        .LeftHeader = "Fiche Cli - " & "Toto"
        .CenterHeader = "DGS_WORKLIST - Impression Fiche Courante- onglet 1&2"
        .RightHeader = "ce qu'on veut"
        .LeftFooter = "Le texte Voulu"
        .CenterFooter = "&D" & " - " & "&T"
        .RightFooter = "page " & "&P" & " sur " & "&N"
        .PrintErrors = 0 'à invalider si avant 2003
End With
Stop
objFeuilPass.PrintOut  'on lance l'impression / imprimante par défaut
Application.DisplayAlerts = False
objFeuilPass.Delete  'on supprime les feuilles temporaires
Application.DisplayAlerts = True
Set objFeuilPass = Nothing
mulFicheOnglet.Value = 0
End Sub



donc si je l'enleve j'ai une erreur avec keybd_event vbKeySnapshot..... present dans le code comprend tu .
 
Re : Imprimer un USF multipage

Re,

Non, désolé mais je ne comprends pas.

Depuis près de dix ans que je travaille les macros Excel, j'ai perdu l'habitude, ou j'ai pris la mauvaise habitude de ne plus utiliser Option Explicit (trop de mémoire à dispo.maintenant, sans doute) et pourtant, tous mes codes fonctionnent.

Je viens de rééssayer de remplir ton Usf (avec Option expliciit et sans), tout se passe bien, haut en couleur et puis, Selectionner la feuille (pas de possiblilité de selection) je ne sais plus trop quoi, et ensuite un débeug sur Module11.

Mode d'emploi et Résultat attendu necessaire pour moi.
 
Dernière édition:
Re : Imprimer un USF multipage

voila j'ai mis un lien de mon fichier complet sous cijoint car c'est trop gros par excel dowmload


je résume mon soucis quand j'essaie de rentrée dans ma combo le mot Anneaux
et j'ai un message d'erreur problème de variante quand j'enlève dans ma macro option explicite...... utile pour le bouton imprimer je peut plus utiliser ce dernier mais ma combo re fonctionne


pour lancer USF allez dans accueil et cliquez sur fiche agent dans le premier onglet usf gestion de fiche rentrez anneaux dans la première combo et la paf erreur de variante pouvez vous m'aider svp merci
HTML:
	http://cjoint.com/?bdkBH2I43e
 
Re : Imprimer un USF multipage

voila j'ai mis un lien de mon fichier complet sous cijoint car c'est trop gros par excel dowmload


je résume mon soucis quand j'essaie de rentrée dans ma combo le mot Anneaux
et j'ai un message d'erreur problème de variante quand j'enlève dans ma macro option explicite...... utile pour le bouton imprimer je peut plus utiliser ce dernier mais ma combo re fonctionne


pour lancer USF allez dans accueil et cliquez sur fiche agent dans le premier onglet usf gestion de fiche rentrez anneaux dans la première combo et la paf erreur de variante pouvez vous m'aider svp merci
HTML:
    http://cjoint.com/?bdkBH2I43e
bonjour
option explicite
n'est pas en cause seulement il sert à ce que les variables du module soient déclarées correctement pour une gestion de mémoires

hors il y a des variables qui ne sont pas bien déclarées dans le module

bien entendu si on enlève option explicite ça fonctionne mais la mémoire est mal gérée.

donc reprendre le prg et revoir toutes les variables

le problème survient si il y a une erreur dans l'exécution du prg
c'est pour cela que j'avais fait une petite procédure de ré initialisation dans ce que j'avais envoyé
 
Re : Imprimer un USF multipage

merci a toi pour le temps tu me consacre

le problème c'est que je pige rien au variable et la dans mon cas je sais pas trop ou chercher je suis novice j'ai commencer excel ya pas très longtemps et là je plane peut tu me donner un endroit ou je pourrais comprendre ce qui y a faire pour m'aider a gérer cela stp merci encore pour ton aide
 
Re : Imprimer un USF multipage

merci a toi pour le temps tu me consacre

le problème c'est que je pige rien au variable et la dans mon cas je sais pas trop ou chercher je suis novice j'ai commencer excel ya pas très longtemps et là je plane peut tu me donner un endroit ou je pourrais comprendre ce qui y a faire pour m'aider a gérer cela stp merci encore pour ton aide
voilà le code impression modifié
Code:
Option Explicit

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _
                                              ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
' Fait appel à une API qui permet de simuler les frappes au clavier;
'bscan qui permet d'utiliser certaines touches spéciales nous intéresse particulièrement ici,
'si sa valeur est 1, on fait référence à la copie d'écran,
'si elle est à 0, on fait référence à la forme active => ce qui est le cas ici.









Private Sub CommandButton11_Click()
    Dim objFeuilPass As Worksheet
    Dim i As Integer
    Dim retour As Integer
    Sheets.Add.Name = "PassImp"        'on ajoute une feuille temporaire au classeur
    Set objFeuilPass = Sheets("PassImp")
    On Error GoTo suite
    For i = 1 To 2
        MultiPage1.Value = i - 1        ' on donne le focus à l'onglet voulu, 1ère page = 0
        Me.Repaint        'La méthode Repaint est utile si le contenu ou l'aspect d'un objet change
        'de façon significative, et si vous ne voulez pas attendre que le système redessine automatiquement la zone.
        'indispensable ici, sinon l'USF n'est pas rafraîchi assez vite.
        keybd_event vbKeySnapshot, 1, 0&, 0&        ' capture de l'USF
        DoEvents        'permet de donner le temps à l'image d'être chargée / mémoire
        'Sheets.Add.Name = "PassImp"  'on ajoute une feuille temporaire au classeur
        'Set objFeuilPass = Sheets("PassImp")
        objFeuilPass.Paste        ' on copie notre Snapshot
        With objFeuilPass.Shapes(i)        'on redimetionne l'image à volonté
            .Top = 3 + retour
            .Left = 10
            .Height = 390
            .Width = 448
        End With
        retour = retour + 390
    Next
    With objFeuilPass.PageSetup        'on met en forme nos paramètres d'impression
        .LeftMargin = Application.InchesToPoints(0.35)
        .RightMargin = Application.InchesToPoints(0.35)
        .TopMargin = Application.InchesToPoints(0.56)
        .BottomMargin = Application.InchesToPoints(0.53)
        .HeaderMargin = Application.InchesToPoints(0.32)
        .FooterMargin = Application.InchesToPoints(0.39)
        .LeftHeader = "Fiche Cli - " & "Toto"
        .CenterHeader = "DGS_WORKLIST - Impression Fiche Courante- onglet 1&2"
        .RightHeader = "ce qu'on veut"
        .LeftFooter = "Le texte Voulu"
        .CenterFooter = "&D" & " - " & "&T"
        .RightFooter = "page " & "&P" & " sur " & "&N"
        .PrintErrors = 0        'à invalider si avant 2003
    End With
    'Stop
    MsgBox "impression"
  [COLOR=Red]  'j'ai mis en remarque pour éviter l'impression[/COLOR]
    'objFeuilPass.PrintOut  'on lance l'impression / imprimante par défaut
suite:
    Application.DisplayAlerts = False
    objFeuilPass.Delete        'on supprime les feuilles temporaires
    Application.DisplayAlerts = True
    Set objFeuilPass = Nothing
    MultiPage1.Value = 0
End Sub
tu peux voir que j'ai ajouté des variables "i" et "retour"
ces variables sont déclarées par dim i as integer et retour as integer
ce qui signifie que je les déclare comme des entiers
si j'avais declaré ces variables en string (chaine de caractères) par exemple le programme me déclarerait une erreur.
parce que je ne peux compter qu'avec des chiffres et non des additions de caractères
1+1= 2 et a+a = aa
ce qui sert de "gendarme" dans la construction du programme
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
177
  • Question Question
Microsoft 365 Lecture vocale USF
Réponses
5
Affichages
286
Réponses
2
Affichages
170
Retour