Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Affichage msgbox ou usf

7 réponses
Avatar
danielos
Bonjour =E0 toutes et =E0 tous,

J'utilise une macro qui permet d'ouvrir un classeur excel =E0 partir de=20
word en vue d'importer une partie d'une feuille pour en faire un tableau =

dans word (au passage le comptage fonctionne nickel ;-)).
L'ouverture d'excel et l'importation fonctionne tr=E8s bien mais j'aurai =

voulu que l'utilisateur puisse s'assurer avant qu el'importationne se=20
fase que c'est bien la bonne feuille qui est active dans le fichier excel=
=2E
Bien =E9videment, je ne maitrise pas le nom de la feuille qui comporte le=
s=20
donn=E9es =E0 importer et je ne sais pas sur quelle page =E9tait l'utilis=
ateur=20
lorsqu'il a enregistr=E9 la derni=E8re fois son classeur excel !

Je pensais donc apr=E8s l'ouverture du fichier excel et son affichage,=20
afficher une msgbox qui permettrait =E0 l'utilisateur d'avoir la=20
possibilit=E9 de s=E9lectionner la bonne feuille.

Une msgbox me semblait toute indiqu=E9e...
Le pb c'est que la msgbox s'affiche soit derri=E8re excel (sans=20
vbMsgBoxSetForeground) et l=E0 l'utilisateur ne la voit pas, soit (avec=20
vbMsgBoxSetForeground) elle vient en premier plan =E0 l'=E9cran mais en=20
ayant activ=E9 word avant. De ce fait, l'utilisateur n'a plus le classeur=
=20
excel juste derri=E8re la msgbox.

Ce que j'aurai souhait=E9 c'est que la msg box s'affiche devant la fen=EA=
tre=20
excel.

J'ai aussi essay=E9 de passer par un usf mais c'est du pareil au m=EAme q=
ue=20
la msgbox.

Auriez-vous une piste ?

Ci-dessous le code utilis=E9.
Merci d'avance
Daniel

Sub ouvrir_excel()

Dim finput As FileDialog
Dim chemin As String

On Error GoTo rien

Set finput =3D Excel.Application.FileDialog(msoFileDialogOpen)
finput.Show

chemin =3D finput.SelectedItems(1)

Set exl =3D CreateObject("excel.application")
exl.Workbooks.Open (chemin)
exl.Visible =3D True
Range("A1").Select 'c'est seulement pour mettre excel =E0 l'=E9cran=
et=20
pas seulement l'avoir en onglet

' MsgBox (" Merci de v=E9rifier que c'est bien la feuille avec=20
l'effectif qui est affich=E9e =E0 l'=E9cran puis cliquez sur OK "),=20
vbMsgBoxSetForeground

' UserForm1.Show

rien:
End Sub

7 réponses

Avatar
Geo
Bonjour

... soit (avec vbMsgBoxSetForeground) elle vient en
premier plan à l'écran mais en ayant activé word avant. De ce fait, l'utilisateur n'a
plus le classeur excel juste derrière la msgbox.



Vous mettez word invisible avant l'affichage du msgbox et vous le
remettez visible après ?
Avatar
Daniel
Bonjour,

Non je ne mettais pas word en invisible. C'est nettement mieux en
faisant ainsi !
Merci pour le truc.
Par contre ça ne fonctionne qu'avec un msgbox et pas avec un userform.



Geo a écrit :
Bonjour

... soit (avec vbMsgBoxSetForeground) elle vient en premier plan à
l'écran mais en ayant activé word avant. De ce fait, l'utilisateur n'a
plus le classeur excel juste derrière la msgbox.



Vous mettez word invisible avant l'affichage du msgbox et vous le
remettez visible après ?
Avatar
Geo
Bonsoir

Il n'y a pas de raison, vous pouvez mettre l'extrait de code ?
Avatar
danielos
Bonjour,

Bien sûr, voici mes codes

Sub ouvrir_excel()
Dim finput As FileDialog
Dim chemin As String
Dim WordApp As Word.Application

On Error GoTo rien

Set finput = Excel.Application.FileDialog(msoFileDialogOpen)
finput.Show

chemin = finput.SelectedItems(1)

Set exl = CreateObject("excel.application")
exl.Workbooks.Open (chemin)
exl.Visible = True
Range("A1").Select

' Masque word pour que l'USF soit devant le classeur excel
Set WordApp = Word.Application
WordApp.Visible = False

UserForm1.Show

rien:
End Sub

et le code de l'USF

Private Sub UserForm_Initialize()
Dim i As Integer
With ActiveWorkbook
For i = 1 To ThisWorkbook.Sheets.Count
ComboBox1.AddItem (ThisWorkbook.Sheets(i).Name)
Next i
End With
End Sub

Private Sub UserForm_Click()
Call importation
UserForm1.Hide
End Sub


Word est remis en visible dans la macro importation bien que l'USF soit
en mode Modal. C'est vrai que je pourrai le remettre dans la fin de la
macro ouvrir_excel().

Merci en tout cas de votre gentillesse pour cette attention.

Daniel





Geo a écrit :
Bonsoir

Il n'y a pas de raison, vous pouvez mettre l'extrait de code ?
Avatar
danielos
Bonjour,

Quelques corrections apportées mais j'ai toujours le souci suivant:
lorsque la msgbox est activée, elle est bien devant le fichier excel qu e
l'on a ouvert et après ok, le userform est aussi devant. Par contre si
je retire l'affichage de la msgbox, le userform s'affiche derrière le
classeur.

Sub ouvrir_excel()

Dim finput As FileDialog
Dim chemin As String
Dim WordApp As Word.Application

On Error GoTo rien

Set finput = Excel.Application.FileDialog(msoFileDialogOpen)
finput.Show

chemin = finput.SelectedItems(1)

Set exl = CreateObject("excel.application")
exl.Workbooks.Open (chemin)
exl.Visible = True
Range("A1").Select

' Masque word pour avoir le classeur au 1er plan
Set WordApp = Word.Application
WordApp.Visible = False

' MsgBox (" Vérifiez que c'est bien la feuille avec l'effectif qui
est affichée à l'écran" & Chr(10)), vbMsgBoxSetForeground

UserForm1.Show

rien:

End Sub

********************
les codes du userform :

Private Sub UserForm_Initialize()
Dim i As Integer

With ActiveWorkbook

For i = 1 To Sheets.Count
Me.ListBox1.AddItem (Sheets(i).Name)
Next i

End With

End Sub

Private Sub CommandButton1_Click()

feuil = Me.ListBox1
Sheets(feuil).Select

Call importation
UserForm1.Hide
End Sub




Geo a écrit :
Bonsoir

Il n'y a pas de raison, vous pouvez mettre l'extrait de code ?
Avatar
Geo
Bonjour

Désolé pour cette interruption de l'image.

Le mieux serait de trouver comment forcer l'affichage, peut-être en
utilisant qqch comme activer la fenêtre de la bonne appli.
Sinon, un truc à essayer : mettre la userform dans excel et non word ?

Pour des questions pointues Excel, il vaudrait mieux aller sur un forum
Answers de Microsoft.
Avatar
danielos
Bonjour Géo,

Pour la solution de mettre le code dans excel, c'est sûr que cela aurai t
été mieux mais je ne connais pas au départ le classeur que l'utilis ateur
ouvrira et l'idée de forcer l'écriture d'un code dans le classeur ne me
plait qu'à moitié car il faut activer les références.. bon ça o k, mais
aussi forcer l'installation de la macro pour ne pas être tributaire
d'une action de l'utilisateur et ça, c'est moins sympathique.
J'ai effectivement posté aussi sur le forum excel car ma manip d'ouvrir
excel à partir d eword pourrait être l'inverse et les USF sont plus
souvent utilisés dans les classeurs.
En tout cas merci de ton attention.
Au plaisir.

Daniel


Geo a écrit :
Bonjour

Désolé pour cette interruption de l'image.

Le mieux serait de trouver comment forcer l'affichage, peut-être en
utilisant qqch comme activer la fenêtre de la bonne appli.
Sinon, un truc à essayer : mettre la userform dans excel et non word ?

Pour des questions pointues Excel, il vaudrait mieux aller sur un forum
Answers de Microsoft.