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
Supporter XLD
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...

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bien fait pour toi car tu ne veux que faire plaisir à fanch55 mais je te remercie quand même lol
 

patricktoulon

XLDnaute Barbatruc
ok
regarde bien cette capture


j'ai modifié le code
VB:
Function ArrayInTextColumVBTAB2(t)
    Dim texte$, minus&, maxi&, Mask$, fois&
     minus = Len(Join(t)): maxi = 0
    For i = 0 To UBound(t)
        If Len(t(i)) > maxi Then maxi = Len(t(i)) 'on determine la longeur de chaine la plus longue
         If Len(t(i)) < minus Then minus = Len(t(i)) 'on determine la longeur de chaine la plus petite
         Next
       If maxi / minus > 4 Then fois = 2 Else fois = 1
       Mask = Application.Rept(" ", (maxi * fois) + 3)
       ReDim t2(UBound(t))
        For i = 0 To UBound(t)
        t2(i) = Mask 'on met le mask d'espace a chaque tour  dans l'item du tableau 2
        Mid(t2(i), 1, Len(t(i))) = t(i) 'on met la valeur en lieu et place dans le masck avec mid on garde donc les espaces restants
        t2(i) = t2(i) & vbTab & ":aligné" ' et on ajoute enfin la tabulation pour formater les irégularités des espacement de caracteres selon les mots
     Next
     Debug.Print Join(t2, vbCrLf)
    ArrayInTextColumVBTAB2 = Join(t2, vbCrLf)
End Function
je pense que l'on a une limite avec les msgbox puisque dans le debug on est bon
 

TooFatBoy

XLDnaute Barbatruc
comme tu peux le voir le msgbox s'adapte en taille tout seul
Certes, ça s'adapte, mais hélas ça ne le fait pas correctement.


Je ne sais pas si ça vient de la même erreur que dans ton calcul de résolution de l'affichage, mais pour information chez moi ça donne ça :


Et si on écrit "village" correctement, ça ne modifie pas la ligne du "tromblon" mais celle de "toto" et ça donne ça :
 

patricktoulon

XLDnaute Barbatruc
bonjour @Marcel32
font tahoma d'origine a 11 points



VB:
Sub test3()
    t = Array("toto", "titi", "riri", "gaston", "henry", "charles xavier", "le tromblon du vilage")
    tx = Array("des bannanes", "des pommes", "des poires,des grillottes,des mures et des groseille", "des oranges", "des cerises", "des framboises", "des kakis")
    texte = ArrayInTextColumVBTAB2(t, tx)
    reponse = MsgboxX.showX(texte & vbCrLf & vbCrLf & "mangez vous de ces fruits vous aussi?", "question pour un champion")
    Select Case reponse
    Case vbOK: MsgBox "vous avez repondu oui"
    Case vbNo:: MsgBox "vous avez repondu non"
    End Select
End Sub
 

patricktoulon

XLDnaute Barbatruc
pour ceux qui n'ont pas w7
changez ces lignes et les boutons ne devraient plus etre mal placésje l'oublie souvent mais la logique ici est d'utiliser le inside
VB:
 With .BtNo: .Left = MsgboxX.InsideWidth - .Width - 5: .Top = MsgboxX.message.Height + 5: End With
        With .BtOk: .Left = MsgboxX.InsideWidth - (.Width * 2.3) - 5: .Top = MsgboxX.message.Height + 5: End With
 

TooFatBoy

XLDnaute Barbatruc
C'est mieux !

En tâtonnant encore un peu on devrait arriver à avoir quelque chose de correct pour les boutons.

Pour la hauteur de la TextBox on doit aussi pouvoir arriver à un truc correct en fonction du nombre de lignes.

Mais pour l'alignement du texte ça semble plus difficile car la police de caractères n'est pas à chasse fixe, comme le disait Fanch55 en #18.
 

fanch55

XLDnaute Barbatruc
W11/Excel 2019
 

Discussions similaires

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