Enregistrement fichier, supprimer les " " entre 2 champs vides [Résolu]

Over.Slash 10 Messages postés lundi 24 mars 2014Date d'inscription 20 août 2014 Dernière intervention - 24 mars 2014 à 22:23 - Dernière réponse : Whismeril 12029 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

2 réponses

Over.Slash 10 Messages postés lundi 24 mars 2014Date d'inscription 20 août 2014 Dernière intervention - 24 mars 2014 à 23:06
0
Merci
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"
Commenter la réponse de Over.Slash
Whismeril 12029 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention - 24 mars 2014 à 23:11
0
Merci
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.
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.