![]() |
|
Forum
|
|
|
#2 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: décembre 2006
Localisation: chassieu
Messages: 178
|
bonjour,
Ah ! non ! c'est un peu court, jeune homme ! On pouvait dire... Oh ! Dieu !.., bien des choses en somme... En variant le ton, - par exemple, tenez Agressif : " Moi, monsieur, si j'avais un tel fichier, Il faudrait sur-le-champ que je vous l'envoyasse ! " Amical : " Mais il doit trainer dans une place Pour voir, cliquez-nous "envoyer" ou je zap ! " Descriptif : " C'est un doc !... c'est une txt !... c'est un csv ! Que dis-je, c'est un csv ?... faisons appel au pendule ! " ..... à + ><> |
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Accro
|
Bonjour STP, nouv
Sans rapport avec le fil : Nouv très bien en plus d'Excel, on a des lettres, j'adore ta parodie et en plus, A la fin de l'envoi tu touches. A+
__________________
Jiheme La Science consiste à passer d'un étonnement à un autre (Aristote) Excel aussi (Moi) FAITES COMME LE SERVICE PUBLIC SUPPRIMEZ LA PUB |
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: décembre 2006
Localisation: chassieu
Messages: 178
|
re,
bon puisque ça plait : Ô rage ! ô désespoir ! ô week end ennemi ! N'ai-je donc pas ce fichier honni ? Et ne puis-je envoyer ces étiquettes, et voir d'un seul coup répondre à ma requête ? désolée mais boule en panne ce matin, donc j'irais au plus simple - copier coller ![]() sans connaitre la structure du fichier word, difficile de répondre à ta question, donc oui ton fichier word serait le bienvenue ou alors un très très très bon descriptif du fichier... ><> |
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: février 2005
Messages: 640
|
B'soir à tous, (et pour mon 500 ième!!!)
Un premier jet d'une macro à placer dans un module à déclencher par un bouton placé sur une des feuilles. A noter : le code est "générique", ç-à-d : pas besoin d'activer de référence à quelconque librairie (et toc!) Code:
Option Explicit
Sub Etiquettes_Word()
Dim NDF As String
Dim WordApp As Object
Dim WordDoc As Object
Dim i As Integer, j As Integer
Dim LigneXL As Integer
LigneXL = ActiveSheet.Range("A65000").End(xlUp).Row + 1
NDF = Application.GetOpenFilename
On Error Resume Next
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Open(NDF, ReadOnly:=False)
With WordApp
.Visible = False
With WordDoc.Tables(1)
For i = 1 To .Rows.Count
For j = 1 To 3
ActiveSheet.Cells(LigneXL, 1).Value = .Cell(i, j).Range.Text
LigneXL = LigneXL + 1
Next j
Next i
End With
End With
WordApp.Application.Quit
Set WordDoc = Nothing
Set WordApp = Nothing
MsgBox (" Acquisition Ok")
End Sub
Amélioration à apporter : le découpage propre des données par colonnes ... tatiak
__________________
Visitez le Blog-à-tatiak! |
|
|
|
|
|
#8 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: février 2005
Messages: 640
|
Bonjour à tous,
![]() Pour le 501ème, et en complément de la macro d'hier, une p'tite fonction qui tronçonne le contenu en Nom/Adresse/Cp/Ville Code:
Option Explicit
Sub Etiquettes_Word()
Dim NDF As String
Dim WordApp As Object
Dim WordDoc As Object
Dim i As Integer, j As Integer
Dim LigneXL As Integer
Dim tatiak As String
LigneXL = ActiveSheet.Range("A65000").End(xlUp).Row + 1
NDF = Application.GetOpenFilename
On Error Resume Next
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Open(NDF, ReadOnly:=False)
With WordApp
.Visible = False
With WordDoc.Tables(1)
For i = 1 To .Rows.Count
For j = 1 To 3
tatiak = .Cell(i, j).Range.Text
ActiveSheet.Cells(LigneXL, 1).Value = PartieLigne(1, tatiak)
ActiveSheet.Cells(LigneXL, 2).Value = PartieLigne(2, tatiak)
ActiveSheet.Cells(LigneXL, 3).Value = Mid(PartieLigne(3, tatiak), 1, 5)
ActiveSheet.Cells(LigneXL, 4).Value = Mid(PartieLigne(3, tatiak), 7)
LigneXL = LigneXL + 1
Next j
Next i
End With
End With
WordApp.Application.Quit
Set WordDoc = Nothing
Set WordApp = Nothing
MsgBox (" Acquisition Ok")
End Sub
Function PartieLigne(N As Byte, S As String) As String
Dim Caract As String
Dim i As Integer, j As Integer, nb13 As Integer
PartieLigne = ""
i = 1
nb13 = 0
Caract = Mid(S, i, 1)
Do
Do
Caract = Mid(S, i, 1)
i = i + 1
Loop Until Caract = Chr$(13)
nb13 = nb13 + 1
Loop Until nb13 = N
j = i
Do
Caract = Mid(S, j, 1)
j = j + 1
Loop Until Caract = Chr$(13)
PartieLigne = Mid(S, i + 1, j - i)
End Function
tatiakPS: je me permets juste une remarque, la mise en ligne d'un fichier nominatif avec adresses est p'têt pas très conseillé, un fichier "anonymisé" aurait p'têt été mieux (même si ça semble être une injonction paradoxale ... )
__________________
Visitez le Blog-à-tatiak! Dernière modification par tatiak ; 04/05/2008 à 09h24. |
|
|
|
|
|
#9 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: octobre 2007
Messages: 8
|
Titiak,
mon fichier word adresse comporte plusieurs centaines de pages . comment faire pour traiter tout le fichier ,car la macro ne traite qu'une seule page. Bravo et merci a Titiak pour son exellent travail |
|
|
|
|
|
#10 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: février 2005
Messages: 640
|
Re
Merci pour le compliment ![]() Pour un grand document, c'est simple, yaka modifier la macro comme suit : Code:
For NbTableaux = 1 To WordDoc.tables.Count
With WordDoc.tables(NbTableaux)
For i = 1 To .Rows.Count
For j = 1 To 3
tatiak = .Cell(i, j).Range.Text
ActiveSheet.Cells(LigneXL, 1).Value = PartieLigne(1, tatiak)
ActiveSheet.Cells(LigneXL, 2).Value = PartieLigne(2, tatiak)
ActiveSheet.Cells(LigneXL, 3).Value = Mid(PartieLigne(3, tatiak), 1, 5)
ActiveSheet.Cells(LigneXL, 4).Value = Mid(PartieLigne(3, tatiak), 7)
LigneXL = LigneXL + 1
Next j
Next i
End With
Next NbTableaux
tatiak
__________________
Visitez le Blog-à-tatiak! |
|
|
|
|
|
#11 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: octobre 2007
Messages: 8
|
j'ai une erreur de compilation avec le script quand je le modifie comme ci dessous:
Option Explicit Sub Etiquettes_Word() Dim NDF As String Dim WordApp As Object Dim WordDoc As Object Dim i As Integer, j As Integer Dim LigneXL As Integer Dim tatiak As String LigneXL = ActiveSheet.Range("A65000").End(xlUp).Row + 1 NDF = Application.GetOpenFilename On Error Resume Next Set WordApp = CreateObject("Word.Application") Set WordDoc = WordApp.Documents.Open(NDF, ReadOnly:=False) With WordApp .Visible = False For NbTableaux = 1 To WordDoc.tables.Count With WordDoc.tables(1) For i = 1 To .Rows.Count For j = 1 To 3 tatiak = .Cell(i, j).Range.Text ActiveSheet.Cells(LigneXL, 1).Value = PartieLigne(1, tatiak) ActiveSheet.Cells(LigneXL, 2).Value = PartieLigne(2, tatiak) ActiveSheet.Cells(LigneXL, 3).Value = Mid(PartieLigne(3, tatiak), 1, 5) ActiveSheet.Cells(LigneXL, 4).Value = Mid(PartieLigne(3, tatiak), 7) LigneXL = LigneXL + 1 Next j Next i End With End With Next NbTableaux WordApp.Application.Quit Set WordDoc = Nothing Set WordApp = Nothing MsgBox (" Acquisition Ok") End Sub Function PartieLigne(N As Byte, S As String) As String Dim Caract As String Dim i As Integer, j As Integer, nb13 As Integer PartieLigne = "" i = 1 nb13 = 0 Caract = Mid(S, i, 1) Do Do Caract = Mid(S, i, 1) i = i + 1 Loop Until Caract = Chr$(13) nb13 = nb13 + 1 Loop Until nb13 = N j = i Do Caract = Mid(S, j, 1) j = j + 1 Loop Until Caract = Chr$(13) PartieLigne = Mid(S, i + 1, j - i) End Function |
|
|
|
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| texte à l'envers | Dan31 | Forum Excel | 7 | 04/10/2007 19h47 |
| Ecrire un mot à l'envers | Don Foster | Forum Excel | 11 | 07/06/2007 22h06 |
| Boucle à l'envers | Fab117 | Forum Excel | 3 | 03/04/2007 11h51 |
| A l'envers !!! :o) | Gilles | Forum Excel | 10 | 09/10/2006 09h33 |
| date à l'envers | julie | Forum Excel Downloads - Archives | 2 | 16/02/2004 21h26 |