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

TooFatBoy

XLDnaute Barbatruc
Avec #57, c'est pareil : les boutons sont joliment placés, la TextBox est toujours un peu trop haute et beaucoup trop large, et l'alignement du texte n'est toujours pas bon (mais ça doit être impossible à automatiser) :
Diese57.png


Windows 10 Pro 64 bits 21H1 et Excel 2016
 

laurent950

XLDnaute Accro
Bonsoir le Forum,

Il y a une astuce pour réalisé des colonnes et alignement avec une Msgbox
Il y a une constante a régler pour l'alignement avec les colonnes
Dim Ecart As Integer: Ecart = 10
je le fait de 10 en 10
Dim Ecart As Integer: Ecart = 10
dans la fonction (rechercher cette ligne) a réglé en fonction de la longueur de la chaine
la plus longue du tableau
Si cette chaine fait 21 caractère pour "le tromblon du vilage" alors l'écart sera de 3 x 10
ect.
t(i) & String((3 * Ecart) - Len(t(i)), " ")

VB:
Sub test1()
' Msgbox Test 1
    Dim t, tx As Variant
    Dim reponse As Long
    t = Array("toto", "titi", "riri", "gaston")
    tx = Array("des bannanes", "des pommes", "des poires", "des oranges")
    reponse = MsgBox(Message(t, tx), vbYesNo)
    ' En complément
    Select Case reponse
        Case 6: MsgBox "vous avez repondu oui"
        Case 7: MsgBox "vous avez repondu non"
    End Select
End Sub

Code:
Sub test2()
' Mesgbox Test 2
    Dim t, tx As Variant
    Dim reponse As Long
    t = Array("toto", "titi", "riri", "gaston", "henry", "charles xavier", "le tromblon du vilage")
    tx = Array("des bannanes", "des pommes", "des poires", "des oranges", "des cerises", "des framboises", "des kakis")
    reponse = MsgBox(Message(t, tx), vbYesNo)
    ' En complément
    Select Case reponse
        Case 6: MsgBox "vous avez repondu oui"
        Case 7:: MsgBox "vous avez repondu non"
    End Select
End Sub

La foonction

Code:
Function Message(ByRef t As Variant, ByRef tx As Variant) As String
Dim txt As String
' il faut réglé la constante "Ecart" en fonction de la longeur des textes !
' Cf avec "le tromblon du vilage" j'ai du multiplier par 3 l'écart soit (3x10) = 30
Dim Ecart As Integer: Ecart = 10
    For i = LBound(t) To UBound(t)
        txt = txt & t(i) & String((3 * Ecart) - Len(t(i)), " ") & vbTab & vbTab & "Mange :" & vbTab & tx(i) & vbNewLine
    Next i
    ' En complément à la suite de txt
    txt = txt & vbCrLf & "mangez vous de ces fruits vous aussi?"
    Message = txt
End Function

Pour comprendre directement sans fonction

Code:
Sub PourComprendre()
' L'astuce pour les colonnes des Msgbox
' Exemple Test simple.
' Msgbox construction
' Ne pas Oublier de régler la constante pour les écart entre colonne
' String(20 - Len("Train"), " ") ' Ici la constante est de 20 (Soit de 10 en 10) donc 2 fois 20
MsgBox ("Train" & String(20 - Len("Train"), " ") & vbTab & vbTab & 10 & vbTab & "1.0%" & vbNewLine & _
        "Gare" & String(20 - Len("Gare)"), " ") & vbTab & vbTab & 3 & vbTab & "1.9%" & vbNewLine & _
        "Voiture" & String(20 - Len("Voiture"), " ") & vbTab & vbTab & 4 & vbTab & "1.7%" & vbNewLine & _
        "Garage" & String(20 - Len("Garage"), " ") & vbTab & vbTab & 9 & vbTab & "0.6%" & vbNewLine)
End Sub
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bon voilà j'ai remis le kit vbbutton auto
possibilité:
vbYesNo
vbOKOnly
vbOKCancel
vbAbortRetryIgnore
vbYesNoCancel
vbRetryCancel

l’appel se fait dans le même ordre qu'un msgbox classique

en mode responsif
reponse = MsgboxX.showX(texte, vbbutton, title)
'traiter la réponse après

en mode informatif
MsgboxX.showX texte, vbokonly, title
les vbconstantes et title peuvent être omises c'est le bouton ok par defaut
MsgboxX.showX texte

voila
 

Pièces jointes

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

laurent950

XLDnaute Accro
Bonsoir @patricktoulon

Chez moi cela fonctionne pourtant sur mon ordi, c'est intéressant comme sujet. j'ai quand même chercher un peux avant d'avoir un résultat. Il y a un modèle Objet Msgbox, une class pour cette Objet

Je cherche pour voir si il n'y a pas un moyen d'agrandir la largeur d'un Msgbox, pour évité le retour à la ligne si la chaine de caractères est trop longue sans retour à la ligne.
De plus je pense que nous somme limité à 1 024 Caractères dans la Msgbox ?

Voila ce que je récupère dans la Msgbox


1643142275842.png
 

patricktoulon

XLDnaute Barbatruc
c'est même abérant que ça fonctionne
du pars du principe d'un écart de 10 alors que la chaîne la plus longue fait 21 caractères
il est impossible qu'avec la même tu puisse redresser toutes les lignes c'est mathématique
c'est pour te dire a quel point sur W10 et version excel sup c'est vraiment faussé
 

fanch55

XLDnaute Barbatruc
Chez moi cela fonctionne pourtant sur mon ordi, c'est intéressant comme sujet. j'ai quand même chercher un peux avant d'avoir un résultat. Il y a un modèle Objet Msgbox, une class pour cette Objet

Je cherche pour voir si il n'y a pas un moyen d'agrandir la largeur d'un Msgbox, pour évité le retour à la ligne si la chaine de caractères est trop longue sans retour à la ligne.
De plus je pense que nous somme limité à 1 024 Caractères dans la Msgbox ?

Voila ce que je récupère dans la Msgbox


Regarde la pièce jointe 1128703
Sur mon windows11/Excel2016: longueur utile msgbox = 1023 caractères
1643143061010.png
 

laurent950

XLDnaute Accro
Merci @patricktoulon

Oui effectivement c'est pas cohérent je te l'accord, j'ai essayé tellement de solution pour arriver à un résultat qui est vraisemblablement faussé, je te remercie Patrick.
Cela ma aider à comprendre, il n'y a pas de logique avec l'Msgbox
la msgbox a un style de caractères et une taille de caractère par défaut ? c'est visible quelque part ?

Laurent
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 609
dernier inscrit
AmineAB33