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

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

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
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


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.




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
enleve le "/1333333..." pour voir (mais ça c'est le userform normalement rien a voir avec le webbrowser )
 

TooFatBoy

XLDnaute Barbatruc
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
Bonjour Patrick, Bonjour Marcel, le Forum,

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

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

 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Re Patrick : effectivement, comme ça c'est nickel,
Merci
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…