Microsoft 365 problème relation combobox

dubarre

XLDnaute Occasionnel
Bonjour à tous Je viens vers vous car j'ai un petit souci j'aurais besoin de votre aide s'il vous plaît dans mon classeur Excel j'ai un bouton envoyé courrier qui me permets d'envoyer l'adresse sur word le probléme que se passe avec la civilité je n'arrive pas à faire respecter mon souhait qui est par exemple : monsieur soit transformé en M. Et aussi madame en Mme et Mademoiselle Mle Je vous transmets le code vba.

quand vous êtes sur VBA ouvrir le "userform2" et le code se trouve sur le bouton "envoyer courrier"

en vous remerciant d'avance.

VB:
Dim Wapp As Object, X$
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
If Wapp Is Nothing Then Set Wapp = CreateObject("Word.Application")
Wapp.Visible = True
Wapp.Documents.Open ThisWorkbook.Path & "\Courrier_Type_Artiste.docm" 'nom à adapter
With Wapp.ActiveDocument
    .Bookmarks("Date").Range = Date
'    X = Replace(Replace(Replace(CbxCivilite, "Monsieur", "M."), "Madame", "Mme"), "Mlle", "Mademoiselle")
    .Bookmarks("Civilite1").Range = "M."
    .Bookmarks("Civilite2").Range = CbxCivilite
    .Bookmarks("Civilite3").Range = CbxCivilite
    .Bookmarks("Nom").Range = TextBox2 & " " & TextBox24
    .Bookmarks("Adresse").Range = Mid(IIf(TextBox3 = "", "", vbLf & TextBox3) & IIf(TextBox4 = "", "", vbLf & TextBox4) _
        & IIf(TextBox5 = "", "", vbLf & TextBox5) & IIf(TextBox6 = "", "", vbLf & TextBox6), 2) & vbLf & TextBox7 & " " & TextBox25 _
        & IIf(TextBox8 = "", "", vbLf & TextBox8)

End With
'AppActivate "Word" 'facultatif
Wapp.Visible = True
Wapp.Activate
 

Pièces jointes

  • XLD_Dubarre_Gestion_des_Artistes_vBéta08092020.xlsm
    690.4 KB · Affichages: 15
  • Courrier_Type_Artiste.docm
    12.9 KB · Affichages: 5
Solution
re
donc tu as
VB:
'COMBOBOX CIVILITE
    With .CbxCivilite
        .AddItem "M."       
        .AddItem "Mme"        
        .AddItem "Mlle"      
   End With
puis donc :
VB:
Private Sub CommandButton6_Click()

Dim Wapp As Object, X$
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
If Wapp Is Nothing Then Set Wapp = CreateObject("Word.Application")
Wapp.Visible = True
With Me.CbxCivilite
    X = .List(.ListIndex, 0) '---> ICI
End With
Wapp.Documents.Open ThisWorkbook.Path & "\Courrier_Type_Artiste2.docm" 'nom à adapter
With Wapp.ActiveDocument
    .Bookmarks("Date").Range = Date   
    .Bookmarks("Civilite1").Range = X
    .Bookmarks("Civilite2").Range = X
    .Bookmarks("Civilite3").Range = X...

ChTi160

XLDnaute Barbatruc
Bonjour dubarre
Bonjour le Fil,le Forum
petite question
tu veux a partir du Combobox des Civilités qui contient "M.,Mme,Melle "remplacé ces valeurs par leur équivalent soit "Monsieur ,Madame,Mademoiselle" ?
car dans ton post c'est l'inverse et dans la procédure c'est ça!
c'est ça ?
merci
jean marie
 

ChTi160

XLDnaute Barbatruc
Re
si c'est Ok
j'ai mis dans Userform_Initialize
VB:
'COMBOBOX CIVILITE
    With .CbxCivilite
        .ColumnCount = 2
        .ColumnWidths = "1;0"
        .AddItem "M."
        .List(.ListCount - 1, 1) = "Monsieur"
        .AddItem "Mme"
        .List(.ListCount - 1, 1) = "Madame"
        .AddItem "Mlle"
        .List(.ListCount - 1, 1) = "Mademoiselle"
   End With
puis dans la procédure du Bouton
VB:
Private Sub CommandButton6_Click()

Dim Wapp As Object, X$
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
If Wapp Is Nothing Then Set Wapp = CreateObject("Word.Application")
Wapp.Visible = True
With Me.CbxCivilite
    X = .List(.ListIndex, 1) '---> ICI
End With
Wapp.Documents.Open ThisWorkbook.Path & "\Courrier_Type_Artiste2.docm" 'nom à adapter
With Wapp.ActiveDocument
    .Bookmarks("Date").Range = Date    
    .Bookmarks("Civilite1").Range = X
    .Bookmarks("Civilite2").Range = X
    .Bookmarks("Civilite3").Range = X
    .Bookmarks("Nom").Range = TextBox24 & " " & TextBox2
    .Bookmarks("Adresse").Range = Mid(IIf(TextBox3 = "", "", vbLf & TextBox3) & IIf(TextBox4 = "", "", vbLf & TextBox4) _
        & IIf(TextBox5 = "", "", vbLf & TextBox5) & IIf(TextBox6 = "", "", vbLf & TextBox6), 2) & vbLf & TextBox7 & " " & TextBox25 _
        & IIf(TextBox8 = "", "", vbLf & TextBox8)

End With
'AppActivate "Word" 'facultatif
Wapp.Visible = True
Wapp.Activate
End Sub
En espérant avoir compris si non je modifierai !
jean marie
 

dubarre

XLDnaute Occasionnel
bonjour à toi merci de te pencher sur mon problème en fait c'est l'inverse

le probleme et que certaines fois il met M. Et d'autres fois il met monsieur alors que je voudrais qu'il mette uniquement M. Où Mme ou Mle uniquement ce qu'il y a marqué sur la combobox s'il vous plaît
 

ChTi160

XLDnaute Barbatruc
re
donc tu as
VB:
'COMBOBOX CIVILITE
    With .CbxCivilite
        .AddItem "M."       
        .AddItem "Mme"        
        .AddItem "Mlle"      
   End With
puis donc :
VB:
Private Sub CommandButton6_Click()

Dim Wapp As Object, X$
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
If Wapp Is Nothing Then Set Wapp = CreateObject("Word.Application")
Wapp.Visible = True
With Me.CbxCivilite
    X = .List(.ListIndex, 0) '---> ICI
End With
Wapp.Documents.Open ThisWorkbook.Path & "\Courrier_Type_Artiste2.docm" 'nom à adapter
With Wapp.ActiveDocument
    .Bookmarks("Date").Range = Date   
    .Bookmarks("Civilite1").Range = X
    .Bookmarks("Civilite2").Range = X
    .Bookmarks("Civilite3").Range = X
    .Bookmarks("Nom").Range = TextBox24 & " " & TextBox2
    .Bookmarks("Adresse").Range = Mid(IIf(TextBox3 = "", "", vbLf & TextBox3) & IIf(TextBox4 = "", "", vbLf & TextBox4) _
        & IIf(TextBox5 = "", "", vbLf & TextBox5) & IIf(TextBox6 = "", "", vbLf & TextBox6), 2) & vbLf & TextBox7 & " " & TextBox25 _
        & IIf(TextBox8 = "", "", vbLf & TextBox8)
End With
'AppActivate "Word" 'facultatif
Wapp.Visible = True
Wapp.Activate
End Sub
jean marie
 

dubarre

XLDnaute Occasionnel
super ça fonctionne correctement merci de ton aide.

je voudrais te solliciter pour un autre petit truc concernant le classeur

sur le courrier type j'ai une autre question quand il met l'adresse soit de 4 lignes ou de 7 lignes la date qui est en dessous est-il possible de la bloquer au niveau que je souhaite s'il vous plaît
 

dubarre

XLDnaute Occasionnel
voici deux exemples dans la première image le tracé jaune montre la limite du niveau de la date dans la seconde image la date les plus au même niveau par rapport à la mesure de la règle à gauche j'ai fourni dans le premier paragraphe le classeur word où se trouve la date qui est relié au classeur Excel en lançant l'ouverture du userform2 en cliquant sur le bouton envoyer courrier le classeur Word s'ouvre et vous pourrez voir la date à ce niveau-là
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    158.2 KB · Affichages: 9
  • Capture2.JPG
    Capture2.JPG
    163.5 KB · Affichages: 8

ChTi160

XLDnaute Barbatruc
Re
si j'ai bien compris dans l'image 1 la ville et la date sont au niveau 5
et dans l'autre au Niveau 7
mais ce Niveau dépends du nombre de Lignes de L'adresse.
il faudrait donc positionner(remonter) l'adresse de telle façon que l'on puis respecter la Ligne 5 pour pour la Ville et la date.
je ne sais pas si l'on peut positionner plus haut le Début de L'adresse (Civilité etc etc dessous)

jean marie
 

Discussions similaires

Statistiques des forums

Discussions
312 166
Messages
2 085 890
Membres
103 019
dernier inscrit
Eliot_1