Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

CODE VBA Imprimer à partir d'une liste déroualnte

  • Initiateur de la discussion Initiateur de la discussion eduperier
  • 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 !

E

eduperier

Guest
Bonjour,

J'ai créé un formulaire vba sur lequel j'ai créér 2 listes déroulantes :

1ère liste : Matricule de Départ
2ème liste : Matricule de Fin

J'aimerai pouvoir imprimer à partir de ces 2 listes déroulantes, les matricules souhaités.
Exemple de 1 à 5.

En pièce jointe vous trouverez mon fichier ainsi que le code.

Merci pour votre aide.

Claire
 

Pièces jointes

Re : CODE VBA Imprimer à partir d'une liste déroualnte

Bonjour Claire,

Voyez le fichier joint avec cette macro dans l'USF :

Code:
Private Sub cmdLancerImpression_Click()
Dim dep As Variant, fin As Variant, i As Long
With Sheets("Base")
  dep = Application.Match(Val(cmbMatriculeDepart), .[B3:B65536], 0)
  If IsError(dep) Then MsgBox "Matricule de départ inexistant !", 48: cmbMatriculeDepart.SetFocus: Exit Sub
  fin = Application.Match(Val(cmbMatriculeFin), .[B3:B65536], 0)
  If IsError(fin) Then MsgBox "Matricule de fin inexistant !", 48: cmbMatriculeFin.SetFocus: Exit Sub
  dep = .[A3].Cells(dep)
  fin = .[A3].Cells(fin)
End With
With Sheets("Formulaire")
  .PageSetup.PrintArea = ""
  For i = dep To fin
    .[G1] = i
    .PrintOut
  Next
End With
End Sub
Il faut utiliser la fonction Val quand on définit dep et fin car les matricules sont des nombres.

A+
 

Pièces jointes

Re : CODE VBA Imprimer à partir d'une liste déroualnte

Re,

Solution nettement plus simple, donc meilleure :

Code:
Private Sub cmdLancerImpression_Click()
Dim dep As Long, fin As Long, i As Long
dep = cmbMatriculeDepart.ListIndex
If dep = -1 Then MsgBox "Matricule de départ inexistant !", 48: cmbMatriculeDepart.SetFocus: Exit Sub
fin = cmbMatriculeFin.ListIndex
If fin = -1 Then MsgBox "Matricule de fin inexistant !", 48: cmbMatriculeFin.SetFocus: Exit Sub
With Sheets("Formulaire")
  .PageSetup.PrintArea = ""
  For i = dep To fin
    .[G1] = i + 1
    .PrintOut
  Next
End With
End Sub
Fichier (2).

A+
 

Pièces jointes

Re : CODE VBA Imprimer à partir d'une liste déroualnte

Re Job 75,

Merci infiniment pour ces 2 procédures, cela fonctionne à merveille.

Pour abuser encore, je ne comprends pas ce à quoi correspond sur la ligne de la MSGBOX le nombre 48 : ?

Si tu peux m'éclairer cela m'aiderait fortement.

Encore mille mercis.

Claire
 
Re : CODE VBA Imprimer à partir d'une liste déroualnte

Bonsoir Job 75,

J'ai trouvé ce à quoi correspond le 48 pour une MsgBox. Merci encore pour ton aide.
Bonne soirée.
Claire
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
32
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…