Enregistrement fichier, supprimer les " " entre 2 champs vides

Résolu
Over.Slash Messages postés 10 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 20 août 2014 - Modifié par Over.Slash le 24/03/2014 à 22:53
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 - 24 mars 2014 à 23:11
Bonsoir,

suivant mon code

Sub Macro1()

'Enregistrement auto du fichier

attention = ActiveDocument.MailMerge.DataSource.DataFields(1).Value
contact = ActiveDocument.MailMerge.DataSource.DataFields(3).Value
fonction = ActiveDocument.MailMerge.DataSource.DataFields(4).Value
designation = ActiveDocument.MailMerge.DataSource.DataFields(5).Value
agence = ActiveDocument.MailMerge.DataSource.DataFields(6).Value
service = ActiveDocument.MailMerge.DataSource.DataFields(7).Value

Objet = ActiveDocument.Bookmarks("Objet").Range.Text
Envoie = ActiveDocument.Bookmarks("Envoie").Range.Text

ActiveDocument.SaveAs FileName:="C:\Users\Corsaire 98\Documents\Courriers\Courrier " & attention & " " & contact & " " & fonction & " " & designation & " " & agence & " " & service & " - " & Objet & " - " & Envoie & " - " & Format(Date, "dd-mm-yyyy") & ".doc"

End Sub

le nom de fichier à parfois des espaces de trop due au champs vide si ils ne sont pas renseignés.



je pensais ajouté une fonction If de cette façon.

ActiveDocument.SaveAs FileName:=... & If (attention="" then "" else attention & " ")  ... & ".doc"

si le champ attention est vide vba le désigne comme "".

si c'est le cas je voudrais que " " aprés attention devienne "" dans mon nom de fichier,

et si le texte du champ attention est renseigné il apparait et je veux qu'il soit suivit d'un " ".

et ainsi de suite pour tous les autres champs inclus dans mon nom de fichier.

je sais utiliser la fonction SI sous excel et IF en basic mais pas en vba, quelqu'un pourrais me renseigner ?

je pensais également réécrire le code comme cela

attention = If ActiveDocument.MailMerge.DataSource.DataFields(1).Value = "" then "" else ActiveDocument.MailMerge.DataSource.DataFields(1).Value & " "
contact = If ActiveDocument.MailMerge.DataSource.DataFields(3).Value = "" then "" else ActiveDocument.MailMerge.DataSource.DataFields(3).Value & " "
fonction = If ActiveDocument.MailMerge.DataSource.DataFields(4).Value = "" then "" else ActiveDocument.MailMerge.DataSource.DataFields(4).Value & " "
designation = If ActiveDocument.MailMerge.DataSource.DataFields(5).Value = "" then "" else ActiveDocument.MailMerge.DataSource.DataFields(5).Value & " "
agence = If ActiveDocument.MailMerge.DataSource.DataFields(6).Value = "" then "" else ActiveDocument.MailMerge.DataSource.DataFields(6).Value & " "
service = If ActiveDocument.MailMerge.DataSource.DataFields(7).Value = "" then "" else ActiveDocument.MailMerge.DataSource.DataFields(7).Value & " "

ActiveDocument.SaveAs FileName:="C:\Users\Corsaire 98\Documents\Courriers\Courrier " & attention & contact & fonction & designation & agence & service & ".doc"

mais j'ai une erreur de compilation sur IF

ou encore comme cela

Active Document.SaveAs FileName:="C:\Users\Corsaire 98\Documents\Courriers\Courrier " & attention & " " & If contact = "" Then "" else contact & " " If end & If fonction = "" Then "" else fonction & " " If end & If designation = "" Then "" else designation & " " If end & If contact = "" Then "" else contact & " " If end & " " If end & If agence = "" Then "" else agence & " " If end & " " If end & If service = "" Then "" else service & " " If end  & " - " & Objet & " - " & Envoie & " - " & Format(Date, "dd-mm-yyyy") & ".doc"

mais là encore j'ai une erreur de compilation sur IF

merci par avance de votre aide.

2 réponses

Over.Slash Messages postés 10 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 20 août 2014 1
24 mars 2014 à 23:06
au finale je me suis débrouillé comme un grand voici le résultat


attention = ActiveDocument.MailMerge.DataSource.DataFields(1).Value
If ActiveDocument.MailMerge.DataSource.DataFields(1).Value = "" Then attention = "" Else attention = ActiveDocument.MailMerge.DataSource.DataFields(1).Value & " "

contact = ActiveDocument.MailMerge.DataSource.DataFields(3).Value
If ActiveDocument.MailMerge.DataSource.DataFields(3).Value = "" Then contact = "" Else contact = ActiveDocument.MailMerge.DataSource.DataFields(3).Value & " "


fonction = ActiveDocument.MailMerge.DataSource.DataFields(4).Value
If ActiveDocument.MailMerge.DataSource.DataFields(4).Value = "" Then fonction = "" Else fonction = ActiveDocument.MailMerge.DataSource.DataFields(4).Value & " "


designation = ActiveDocument.MailMerge.DataSource.DataFields(5).Value
If ActiveDocument.MailMerge.DataSource.DataFields(5).Value = "" Then designation = "" Else designation = ActiveDocument.MailMerge.DataSource.DataFields(5).Value & " "


agence = ActiveDocument.MailMerge.DataSource.DataFields(6).Value
If ActiveDocument.MailMerge.DataSource.DataFields(6).Value = "" Then agence = "" Else agence = ActiveDocument.MailMerge.DataSource.DataFields(6).Value & " "


service = ActiveDocument.MailMerge.DataSource.DataFields(7).Value
If ActiveDocument.MailMerge.DataSource.DataFields(7).Value = "" Then service = "" Else service = ActiveDocument.MailMerge.DataSource.DataFields(7).Value & " "


Objet = ActiveDocument.Bookmarks("Objet").Range.Text
Envoie = ActiveDocument.Bookmarks("Envoie").Range.Text

ActiveDocument.SaveAs FileName:="C:\Users\Corsaire 98\Documents\Courriers\Courrier " & attention & contact & fonction & designation & agence & service & " - " & Objet & " - " & Envoie & " - " & Format(Date, "dd-mm-yyyy") & ".doc"
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
24 mars 2014 à 23:11
Au lieu de renseigner tes données dans des variables séparées, mets les dans un tableau. Ensuite tu te sers de la fonction join pour les concaténer.
0
Rejoignez-nous