envoie données d'excel vers word

  • Initiateur de la discussion Initiateur de la discussion Chico64
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

Chico64

Guest
Bonjour à vous Tous,

Ce que je souhaiterais faire :

J'ai des colonnes sur ma feuille excel, 2 m'intéressent:
la colonne C : est rempli d'adresse email
la colonne I : est rempli par soit : vide, Visitor, Owner, Member

Ce qu'il m'intéresserait est de récupérer les adresses email de la colonne C lorsque qu'elles sont liées à Visitor de la colonne I.

Puis d'envoyer ces adresses email séparées par ";" dans un fichier word.

Je vous remercie par avance pour votre temps.

Chico
 
Re : envoie données d'excel vers word

Bonjour,

Si tu nous montres ton fichier et ce que tu as déjà commencé à réaliser, ce sera plus facile et plus rapide.

Ensuite, il existe des solutions en VBA ou en formule selon ce que tu souhaites réaliser : une seule extraction, de nombreuses extractions, si ton fichier est récupéré d'ailleurs, etc.

Typiquement, en formule, tu peux utiliser quelque chose comme :

A mettre dans une colonne

- sur la première ligne de tes données
Code:
=SI(I1="Visitor";C1;"")

- à partir de la deuxième ligne et à tirer jusqu'à la fin des données
Code:
=SI(C1<>"";C1&";";"")&SI(I2="Visitor";C2;"")


Peut-être faisable avec une formule matricielle, faudrait le faire en vrai pour voir.

Cordialement,

--
Max
 
Re : envoie données d'excel vers word

Bonjour,

Essaie ceci :

Code:
Sub Test()
Chemin = ThisWorkbook.Path
Set Wapp = CreateObject("Word.application")
Wapp.Visible = False
Set MonDoc = Wapp.Documents.Add(DocumentType:=0)
For Each X In Range("C1:" & Range("C65536").End(xlUp).Address)
    If X.Offset(0, 6).Value = "Visitor" Then
        Wapp.Selection.TypeText Text:=X & ";"
    End If
Next
Wapp.Selection.TypeBackspace
MonDoc.SaveAs Filename:=Chemin & "\Test.doc"
Wapp.Quit
Set Wapp = Nothing
End Sub
 
Re : envoie données d'excel vers word

Merci beaucoup Catrice,

Cela marche très bien !

Si je ne souhaite plus créer un fichier word pour y insérer ma liste d'adresse email mais plutot que la fonction créer un fichier .txt et y insére la liste d'adresse email...

Merci par avance.

Chico
 
Re : envoie données d'excel vers word

Bonsoir,

Tu peux essaye ceci :
Code:
Sub Test2()
Chemin = ThisWorkbook.Path
MonFichier = "Test.txt"
MonSep = ";"
Marqueur = 0
'--------------------------------
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CreateTextFile Chemin & "\" & MonFichier
Set f = fs.GetFile(Chemin & "\" & MonFichier)
Set ts = f.OpenAsTextStream(2, -2)
For Each X In Sheets("By Organization").Range("C1:" & Sheets("By Organization").Range("C65536").End(xlUp).Address)
    If X.Offset(0, 6).Value = "Visitor" Then ts.Write IIf(Marqueur = 0, X.Value, MonSep & X.Value): Marqueur = 1
Next
ts.Close
End Sub
 
Dernière édition:
Re : envoie données d'excel vers word

Merci BEAUCOUP Catrice,

Tout marche comme je le souhaitais encore merci, cependant pour mieux comprendre le VBA, j'aimerais si tu as le temps de m'expliquer les 3 morceaux de code ci-dessous :


Code:
 Sheets("By Organization").Range("C1:" & Sheets("By Organization").Range("C65536").End(xlUp).Address)

Je ne comprends pas pourquoi, Sheets("By Organization") ?

Code:
Marqueur = 0

Je ne comprends pas pourquoi, à quoi sert le Marqueur = 0

Code:
Set ts = f.OpenAsTextStream(2, -2)

Je ne comprends pas pourquoi, OpenAsTextStream(2, -2)


Merci par avance pour votre temps.

Cordialement.

Chico
 
Re : envoie données d'excel vers word

Bonjour,

Je ne comprends pas pourquoi, Sheets("By Organization") ?
Je suis reparti de l'exemple précédent, la feuille s'appellait By Organization.
Tu peux remplacer Sheets("By Organization") par ActiveSheet par exemple.
J'initialise Marqueur=0 puis le passe à 1 apres la premiere écriture dans le fichier Texte pour ne pas mettre de ";" la premiere fois. En effet, s'il est = à zero on fait un write de X.Value et s'il est = à 1 un write de MonSep & X.Value
Set ts = f.OpenAsTextStream(2, -2)
Ce sont les parametres de OpenAsTextStream
object.OpenAsTextStream([iomode, [format]])
iomode = ForReading, ForWriting ou ForAppending => 2 = ForWriting pour ecrire dans le fichier
format = TristateUseDefault, TristateTrue ou TristateFalse => -2 = TristateUseDefault (Ouvre le fichier avec la valeur par défaut du système).
cf. Aide Excel pour plus de détails.

Edit : Je viens de m'apercevoir qu'on pouvait alléger le code :
Code:
Sub Test2()
Chemin = ThisWorkbook.Path
MonFichier = "Test.txt"
MonSep = ";"
Marqueur = 0
'--------------------------------
Set fs = CreateObject("Scripting.FileSystemObject")
Set Var1 = fs.CreateTextFile(Chemin & "\" & MonFichier, True)
For Each X In ActiveSheet.Range("C1:" & ActiveSheet.Range("C65536").End(xlUp).Address)
    If X.Offset(0, 6).Value = "Visitor" Then Var1.Write IIf(Marqueur = 0, X.Value, MonSep & X.Value): Marqueur = 1
Next
Var1.Close
End Sub
 
Dernière édition:
Re : envoie données d'excel vers word

Bonjour Catrice,

Juste pour vous remercier pour ttes vos réponses j'ai maintenant compris et c'était cela le but, comme cela je peux me débrouiller tout seul.

Cordialement.

Chico
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
528
Réponses
10
Affichages
647
Réponses
15
Affichages
2 K
Compte Supprimé 979
C
Retour