Microsoft 365 lancer un code de la feuille active et afficher le MsgBox sur la feuille active sans activer l'autre feuille

Usine à gaz

XLDnaute Barbatruc
Bonsoir à toutes et à tous,

Je cherche à faire ce qui suit :
Contexte
Je suis sur la feuille "Lancement_code_ici" (feuille active d'où je clique sur mon bouton "MsgBox Rappels du jour"
- sans activer la feuille "RdV_transfert", le code s'éxécute et le MsgBox s'affiche en restant sur la feuille active et le code se termine sans activer la feuille "RdV_transfert"

Je n'ai pas réussi à l'instant à le faire.
Pourriez-vous m'aider ?
Je joins je fichier test et je continue à chercher.

Un grand merci par avance,
lionel :)
 

Pièces jointes

  • forum_test.xlsm
    47.3 KB · Affichages: 8
Solution
Salut à tous,
Code :
VB:
Sub cherche()
Dim Col As Range, Msg As String
Dim T   As String: T = String(20, "-")
Const Dlm = ":   "
    
    Set Col = Worksheets("Rdv_transfert").Columns("h:h").Find( _
              "à confirmer", , xlValues, xlPart, xlByRows, xlNext)
    If Not Col Is Nothing Then
        Set Col = Col.Parent.Rows(Col.Row).Columns
        Msg = "Réseau" & vbTab & vbTab & Dlm & Col("E") & vbLf & _
              "Agent " & vbTab & vbTab & Dlm & Col("F") & vbLf & _
              "Date RdV" & vbTab & Dlm & Col("B") & vbLf & _
              "Date Appel" & vbTab & Dlm & Col("C") & vbLf & _
              "Intervalle" & vbTab & vbTab & Dlm & Abs(DateDiff("d", Col("B"), Col("C"))) & vbLf & vbLf & _
              "ENVOI ? = OUI...

fanch55

XLDnaute Barbatruc
re
dans mes modèle il ne doit pas y avoir de "Me" on est dans un bloc with MsgboxX
je vous fait diverse version avec autres méthodes dans un fichier vous testerez
C'est le code que tu nous as fourni .... même si c'est du quick .
Le Me pour moi est toujours l'objet "container" du code
le Me dans un feuille , c'est la feuille
le Me dans un userform, c'est l'userform
le Me dans une classe, c'est l'objet classe
le Me dans une instance, c'est l'objet instancié

Mais j'ai peut-être pas bien compris Freud 🤔 ;)
 

patricktoulon

XLDnaute Barbatruc
re

oui mais dans la function ShowX (avec 2007 par exemple)on est dans une classe userform pas dans un object userformet
dans une classe le me c'est le module classe pas l'object userform
et dans une classe me.width par exemple ne peut donner qu'une belle erreur un module n'a pas de properties("Width")
visiblement sur 2013 ça passe mais bon
donc dans la fonction ShowX jamais "Me" mais msgboxX (autant garder le coté explicit)
c'est simple il faut le retenir quand tu classe intra userform
 

patricktoulon

XLDnaute Barbatruc
bonjour a tous
bon allez
model 1 MsgboxX texte alignée avec espaces et tabulation

model 2 texte aligné dans 2 textbox qui repique la dimension width du label mesure en autosize (astuce bien connue)

model 3 texte transformé en table html dans un control webbrowser dans le userform

3 module séparés pour tester chacun des model avec les 3 tailles de message

chez moi toutes version est nickelle
j'ai quand même une préférence pour le webbrowser (j'en suis pas a mon coup d'essaie )qui pour ceux qui autoriseront ce control n'auront jamais de problème d'alignement c'est impossible vu que la table n'est pas stylé(css) le flux dimensionne alors automatiquement les cells HTML

démonstration en html
demo.gif

je m'amuse comme un petit avec ces trucs 😂
 

Pièces jointes

  • msgboxX special lionel fanch55 V°2.xlsm
    59.4 KB · Affichages: 4

Usine à gaz

XLDnaute Barbatruc
bonjour a tous
bon allez
model 1 MsgboxX texte alignée avec espaces et tabulation

model 2 texte aligné dans 2 textbox qui repique la dimension width du label mesure en autosize (astuce bien connue)

model 3 texte transformé en table html dans un control webbrowser dans le userform

3 module séparés pour tester chacun des model avec les 3 tailles de message

chez moi toutes version est nickelle
j'ai quand même une préférence pour le webbrowser (j'en suis pas a mon coup d'essaie )qui pour ceux qui autoriseront ce control n'auront jamais de problème d'alignement c'est impossible vu que la table n'est pas stylé(css) le flux dimensionne alors automatiquement les cells HTML

démonstration en html
Regarde la pièce jointe 1128769
je m'amuse comme un petit avec ces trucs 😂
Salut à tous :)
@patrick : j'ai poussé la mémé dans les bégonias. C'est super bien :)
 

patricktoulon

XLDnaute Barbatruc
re tiens lionel celle là elle est pour toi
tu veux du msgbox perso
Ah!!.. je vais t'en donner
en html tu n'aura jamais de soucis pour aligner
et pour le texte pour message dans d'appel pas besoins de mettre des tabulation ou espaces le msgboxW se charge de tout
tu met juste ta variable Dlm
VB:
Sub cherche()
    Dim Col As Range, Msg As String, reponse As VbMsgBoxResult
    Const Dlm = ":"

    Set Col = Worksheets("Rdv_transfert").Columns("h:h").Find( _
              "à confirmer", , xlValues, xlPart, xlByRows, xlNext)
    If Not Col Is Nothing Then
        Set Col = Col.Parent.Rows(Col.Row).Columns
        Msg = "Réseau" & Dlm & Col("E") & vbLf & _
              "Agent " & Dlm & Col("F") & vbLf & _
              "Date RdV" & Dlm & Format(Col("B"), "dddd dd ""(""mmmm mm"")"" yyyy") & vbLf & _
              "Heure RdV" & Dlm & Format(Col("B"), "hh"" h ""nn") & vbLf & _
              "Date Appel" & Dlm & Format(Col("C"), "dddd dd ""(""mmmm mm"")"" yyyy") & vbLf & _
              "Intervalle" & Dlm & Abs(DateDiff("d", Col("B"), Col("C"))) & vbLf & vbLf & _
              "ENVOI ? = OUI        ou      NON"

        reponse = MsgboxW.showX(Msg, vbYesNo, "<-----------RDV----------->")
        Select Case reponse
        Case vbYes: MsgBox "vous avez repondu oui"
        Case vbNo:: MsgBox "vous avez repondu non"
        End Select

    End If
End Sub
1643236400644.png


il est beau y a pas à dire 😂
 

Pièces jointes

  • test msgbox superkool V°2 patricktoulon pour usine a gaz.xlsm
    64.1 KB · Affichages: 5

TooFatBoy

XLDnaute Barbatruc
Hélas, c'est comme pour #94 : c'est foireux au niveau du calcul des largeurs d'affichage. :(

Au-secours.png



En #94, la seule qui tient la route c'est la première fenêtre avec la police Courrier New. Celle-là est nickel ! 👍
Toutes les autres c'est tout biscornu ou mal cadré. :(
 

patricktoulon

XLDnaute Barbatruc
bonsoir @Marcel32
vraiment bizarre vos trucs
une table html par défaut qui n'est pas stylée(css) se dimensionne automatiquement pour que tout se voit
c'est la base d'une table html et c'est immuable
comment vous arrivez a la réduire :oops:🙃
enleve le "/1333333..." pour voir (mais ça c'est le userform normalement rien a voir avec le webbrowser )
 

TooFatBoy

XLDnaute Barbatruc
une table html par défaut qui n'est pas stylée(css) se dimensionne automatiquement pour que tout se voit
c'est la base d'une table html et c'est immuable
comment vous arrivez a la réduire :oops:🙃
enleve le "/1333333..." pour voir (mais ça c'est le userform normalement rien a voir avec le webbrowser )
Le premier principe d'une table HTML c'est de commencer par s'adapter en largeur à l'espace dont elle dispose.

Donc forcément, si tu lui donnes un UserForm un peu étroit en largeur, ben elle fait avec ce qu'elle a et elle se fait toute petite pour rentrer dans la largeur du UserForm, quitte à afficher le contenu de ses cellules sur plusieurs lignes s'il le faut. ;)
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
re tiens lionel celle là elle est pour toi
tu veux du msgbox perso
Ah!!.. je vais t'en donner
en html tu n'aura jamais de soucis pour aligner
et pour le texte pour message dans d'appel pas besoins de mettre des tabulation ou espaces le msgboxW se charge de tout
tu met juste ta variable Dlm
VB:
Sub cherche()
    Dim Col As Range, Msg As String, reponse As VbMsgBoxResult
    Const Dlm = ":"

    Set Col = Worksheets("Rdv_transfert").Columns("h:h").Find( _
              "à confirmer", , xlValues, xlPart, xlByRows, xlNext)
    If Not Col Is Nothing Then
        Set Col = Col.Parent.Rows(Col.Row).Columns
        Msg = "Réseau" & Dlm & Col("E") & vbLf & _
              "Agent " & Dlm & Col("F") & vbLf & _
              "Date RdV" & Dlm & Format(Col("B"), "dddd dd ""(""mmmm mm"")"" yyyy") & vbLf & _
              "Heure RdV" & Dlm & Format(Col("B"), "hh"" h ""nn") & vbLf & _
              "Date Appel" & Dlm & Format(Col("C"), "dddd dd ""(""mmmm mm"")"" yyyy") & vbLf & _
              "Intervalle" & Dlm & Abs(DateDiff("d", Col("B"), Col("C"))) & vbLf & vbLf & _
              "ENVOI ? = OUI        ou      NON"

        reponse = MsgboxW.showX(Msg, vbYesNo, "<-----------RDV----------->")
        Select Case reponse
        Case vbYes: MsgBox "vous avez repondu oui"
        Case vbNo:: MsgBox "vous avez repondu non"
        End Select

    End If
End Sub
Regarde la pièce jointe 1128818

il est beau y a pas à dire 😂
Bonjour Patrick, Bonjour Marcel, le Forum,

Patrick, merci pour cette version "pour lionel".
Elle fonctionne bien mais l'affichage est :
1643263996154.png

Je n'arrive pas à agrandir pour tout voir,

@ plus,
lionel :)
 

patricktoulon

XLDnaute Barbatruc
re
en fait il faudrait remettre le "/1.33333" car le offsetwidth d'un element HtmL donne la dimension en pixel et non en point
c'est en cela que c'est incohérent chez vous
hors le offsetwidth de la table html me sert a dimensionner le webbrowser et userform
alors on prend le taureau par les cornes et dans la fonction ShowX on dimensionne le webbrowser bien plus grand il est redimensionner auto après de toute façon
donc voila même avec "/1.3333..."ou "/(4/3)" chez vous ça devrait fonctionner
sinon il faudra mettre " / Qx"
(Qx Etant le diviseur 1.333 ou 0 déterminé selon le operating sytem dans le initialyse )
ps: j'ai centré la table
ne changez rien et dites moi si c'est bon ou pas

1643272945259.png
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
re
en fait il faudrait remettre le "/1.33333" car le offsetwidth d'un element HtmL donne la dimension en pixel et non en point
c'est en cela que c'est incohérent chez vous
hors le offsetwidth de la table html me sert a dimensionner le webbrowser et userform
alors on prend le taureau par les cornes et dans la fonction ShowX on dimensionne le webbrowser bien plus grand il est redimensionner auto après de toute façon
donc voila même avec "/1.3333..."ou "/(4/3)" chez vous ça devrait fonctionner
sinon il faudra mettre " / Qx"
(Qx Etant le diviseur 1.333 ou 0 déterminé selon le operating sytem dans le initialyse )
ps: j'ai centré la table
ne changez rien et dites moi si c'est bon ou pas

Regarde la pièce jointe 1128840
Re Patrick : effectivement, comme ça c'est nickel,
Merci :)
 

Discussions similaires

Statistiques des forums

Discussions
314 647
Messages
2 111 533
Membres
111 191
dernier inscrit
Assjmka