XL 2013 Sélection entre deux MsgBox...

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 !

StéphaneDeLà

XLDnaute Nouveau
Bonjour,
Je n'ai pas trouvé ma réponse, je tente ici.


J'ai ce code :

If Selection.Count = 1 Then
MsgBox ("Veuillez sélectionner une plage de cellules à exporter.")
t = Timer()
' boucle qui dure 5 secondes
Do While t + 5> Timer()
DoEvents
Loop
' fermeture fenêtre
BOITE.Hide

Set Zone = Selection
ActiveSheet.PageSetup.PrintArea = Zone
End If

MsgBox ("Cet enregistrement remplacera tout autre fichier déjà créé pour la même date de planning"), vbOKOnly + i = vbInformation, "ATTENTION !"

Le truc qui m'ennuie, c'est la boucle, et je Deboge sur la ligne BOITE.Hide

Le but est d'être certain que la 1ère MsgBox n'apparaisse que si on n'a pas effectué de sélection (sinon la procédure se poursuit...), qu'après avoir cliqué sur "OK" elle laisse la sélection être faite par l'utilisateur, et que la 2ème n'apparaisse qu'après avoir validé la 1ère MsgBox et effectué une sélection (ce qui serait tout aussi bien).

Il s'agit d'un tableau évolutif dans lequel on ne voudra imprimer (en PDF) qu'une partie à chaque fois.

Possible, selon vous ?

Vous remerciant par avance...
 
Dernière édition:
Solution
Jette un coup d'œil sur ce fichier .
Tu peux l'adapter selon ton besion
Merci Rheeem !!
Ca fonctionne, et le résultat est exactement comme je le voulais !! Plus qu'à adapter mes MsgBox d'avertissement, mais au moins la sélection est prise en compte avec l'UserForm.
Désolé pour ma façon de faire qui vous a fait galérer, je n'ai pas l'habitude, je ferai mieux pour mon prochain (et peut-être dernier) post 😉
Merci à tous pour vos réponses, et à Rheeem pour la solution clé en main !! 💪💪💪
Bonjour

je ne comprends pas bien ce que tu souhaites faire..
cette ligne :
MsgBox ("Veuillez sélectionner une plage de cellules à exporter.")
se contente de mettre un message: l'utilisateur a juste à cliquer sur OK
et l'impression se lance avec la section active (celle qui était déjà active avant le message box

si tu veux laisser la main à l'utilisateur pour selectionner une zone, il faut repasser par l'inputbox
VB:
If Selection.Count = 1 Then 'si la section active ne contient qu'une cellule
 set Zone=application.inputbox("Veuillez sélectionner une plage de cellules à exporter.",type:=8) 'demande à l'utilisateur de selectionner une plage
'ici.rien n'empêche l'utiisateur de ne selectionne qu'une seule cellule....
ActiveSheet.PageSetup.PrintArea = Zone
End If
 
si tu veux forcer l'utilisateur a selectionner une plage de plusieurs cellules
Code:
set Zone=selection 'on set la selection en cours'
while zone.count=1 'si il y a plusieurs cellules déjà selectionnées, le while est bypassé'
 set Zone=application.inputbox("Veuillez sélectionner une plage de PLUSIEURS cellules à exporter.",type:=8) 'demande à l'utilisateur de selectionner une plage
wend
ActiveSheet.PageSetup.PrintArea = Zone
End If
 
Bonjour

je ne comprends pas bien ce que tu souhaites faire..
cette ligne :
MsgBox ("Veuillez sélectionner une plage de cellules à exporter.")
se contente de mettre un message: l'utilisateur a juste à cliquer sur OK
et l'impression se lance avec la section active (celle qui était déjà active avant le message box

si tu veux laisser la main à l'utilisateur pour selectionner une zone, il faut repasser par l'inputbox
VB:
If Selection.Count = 1 Then 'si la section active ne contient qu'une cellule
 set Zone=application.inputbox("Veuillez sélectionner une plage de cellules à exporter.",type:=8) 'demande à l'utilisateur de selectionner une plage
'ici.rien n'empêche l'utiisateur de ne selectionne qu'une seule cellule....
ActiveSheet.PageSetup.PrintArea = Zone
End If
Bonjour et merci pour ta réponse !

Quand je sélectionne avec l'InputBox active, la zone passe en surbrillance mais n'est pas vraiment sélectionnée, donc ne s'imprime pas en PDF.
C'est pour çà que j'avais décidé de m'en passer et d'essayer d'afficher une MsgBox, qui après "OK" laisserait l'utilisateur sélectionner à la main, puis en re-cliquant pour appeler la macro d'impression celle-ci verrait qu'il y a bien une sélection, et se poursuivrait...
 
et mon post 3 ?

et ca
Avec

If Selection.Count = 1 Then
MsgBox ("Veuillez sélectionner une plage de cellules à exporter.")
Set Zone = Selection 'on set la selection en cours'
While Zone.Count = 1 'si il y a plusieurs cellules déjà selectionnées, le while est bypassé'
Set Zone = Application.InputBox("Veuillez sélectionner une plage de PLUSIEURS cellules à exporter.", Type:=8) 'demande à l'utilisateur de selectionner une plage
Wend
ActiveSheet.PageSetup.PrintArea = Zone
End If

il déboge sur la ligne
ActiveSheet.PageSetup.PrintArea = Zone

'et je suis trop nul pour trouver ce qui bloque...
 
- 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
13
Affichages
17 K
Michel C
M
Retour