Cas particulier: chaîne de caractere
Fermé
djamat
Messages postés
31
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 mai 2013
-
Modifié par djamat le 16/05/2013 à 11:00
djamat Messages postés 31 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 23 mai 2013 - 22 mai 2013 à 11:43
djamat Messages postés 31 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 23 mai 2013 - 22 mai 2013 à 11:43
A voir également:
- Cas particulier: chaîne de caractere
- Site de vente en ligne particulier - Guide
- Cas ram - Guide
- Marketplace vente particulier - Guide
- Whatsapp répondre à un message en particulier - Guide
- Annuaire maroc telecom particulier - Forum Mobile
6 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 22/05/2013 à 11:26
Modifié par Patrice33740 le 22/05/2013 à 11:26
Bonjour,
Pour écrire sur la première ligne libre du tableau (au lieu de la colonne), remplaces la ligne :
Et pour les titres, remplaces :
Cordialement
Patrice
Pour écrire sur la première ligne libre du tableau (au lieu de la colonne), remplaces la ligne :
freeLine = .Cells(.Rows.Count, C.Column).End(xlUp).Row + 1Par:
freeLine = .UsedRange.Rows.Count + 1
Et pour les titres, remplaces :
C.Value = BalPar :
C.Value = UCase(Bal)
Cordialement
Patrice
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
20 mai 2013 à 20:23
20 mai 2013 à 20:23
Bonsoir,
Pas forcément simple ton truc.
Tu ne veux pas fournir un .doc avec une chaine correcte et 2 avec tes anomalies, ainsi que ton .xls ?
Déposer les fichiers sur cjoint.com et coller ici le lien fourni.
eric
Pas forcément simple ton truc.
Tu ne veux pas fournir un .doc avec une chaine correcte et 2 avec tes anomalies, ainsi que ton .xls ?
Déposer les fichiers sur cjoint.com et coller ici le lien fourni.
eric
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 21/05/2013 à 09:06
Modifié par Patrice33740 le 21/05/2013 à 09:06
Pour le texte encadré par la première balise :
PS : cette ligne n'apparait pas correctement (à cause des balises) :
voici le texte visible dans lequel il faut remplacer { et } par [ et ]
Cordialement
Patrice
Txt = Paragraphe.Range.Text Deb = 1 Deb = InStr(Deb, Txt, "[") + 1 Fin = InStr(Deb, Txt, "]") If Deb > 0 And Fin > 0 Then Bal = Mid(Txt, Deb, Fin - Deb) Deb = Fin + 1 Fin = InStrRev(Txt, "& Bal & "") If Fin > 0 Then Txt = Mid(Txt, Deb, Fin - Deb) End If End If
PS : cette ligne n'apparait pas correctement (à cause des balises) :
Fin = InStrRev(Txt, "& Bal & "")
voici le texte visible dans lequel il faut remplacer { et } par [ et ]
Fin = InStrRev(Txt, "{/" & Bal & "}")
Cordialement
Patrice
djamat
Messages postés
31
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 mai 2013
28
21 mai 2013 à 11:19
21 mai 2013 à 11:19
Fichier contenant 3 cas differents de balises, 1 qui fonctionne et 2 autres qui ne focntionnent pas
<a href="https://www.casimages.com/f.php?f=130521111827734063.doc" target="_blank">Lien vers mon fichier</a>
Document .txt, contenant ma macro
<a href="https://www.casimages.com/f.php?f=130521111729432861.txt" target="_blank">Lien vers mon fichier</a>
Merci pour votre aide
@patrice je vais tester ta solution
<a href="https://www.casimages.com/f.php?f=130521111827734063.doc" target="_blank">Lien vers mon fichier</a>
Document .txt, contenant ma macro
<a href="https://www.casimages.com/f.php?f=130521111729432861.txt" target="_blank">Lien vers mon fichier</a>
Merci pour votre aide
@patrice je vais tester ta solution
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
21 mai 2013 à 12:10
21 mai 2013 à 12:10
C'est normal que tu aies des problèmes avec certains de tes exemples car tu traites les paragraphes séparément un par un, alors que certaines balises englobent plusieurs paragraphes.
Tu dois traiter le texte dans sa globalité.
Pour mémoire, dans Word, un nouveau paragraphe est créé chaque fois que tu tapes Entrée (cela provoque un retour à la ligne normal).
L'exemple que le t'ai fourni suppose que la balise d'ouverture et la balise de fermeture ne sont présentes qu'une seule fois dans le texte, si plusieurs balises peuvent être imbriquées, il faut procéder différemment.
Tu dois traiter le texte dans sa globalité.
Pour mémoire, dans Word, un nouveau paragraphe est créé chaque fois que tu tapes Entrée (cela provoque un retour à la ligne normal).
L'exemple que le t'ai fourni suppose que la balise d'ouverture et la balise de fermeture ne sont présentes qu'une seule fois dans le texte, si plusieurs balises peuvent être imbriquées, il faut procéder différemment.
djamat
Messages postés
31
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 mai 2013
28
21 mai 2013 à 13:10
21 mai 2013 à 13:10
ok je comprends mieux
Donc il faut que l'user évite de taper sur 'Entrer' :)
Ou que je revois entièrement mon code :(
Mais je ne vois pas comment je peux parcourir le texte autrement que par paragraphe...
Donc il faut que l'user évite de taper sur 'Entrer' :)
Ou que je revois entièrement mon code :(
Mais je ne vois pas comment je peux parcourir le texte autrement que par paragraphe...
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
21 mai 2013 à 14:14
21 mai 2013 à 14:14
Essaies ce code :
Sub test() ' Ajouter la référence à Microsoft Word XX.X Object Library Dim WordApp As New Word.Application Dim WordDoc As Word.Document Dim C As Range Dim Doc As String, Txt As String, Bal As String Dim Deb As Long, Fin As Long Dim freeLine As Long 'le document Word est supposé fermé avant le lancement de la macro With Sheets("Feuil4") .Cells.Clear 'chemin fichier word en entrée choisis par l'user fichier = ThisWorkbook.Path & "\test.doc" 'ouverture du fichier Word Set WordDoc = WordApp.Documents.Open(fichier) Doc = WordDoc.Range 'initialisation pointeur Deb = 1 'chercher les textes balisés Do Deb = InStr(Deb, Doc, "[") + 1 Fin = InStr(Deb, Doc, "]") If Deb = 1 Or Fin = 0 Then Exit Do Bal = Mid(Doc, Deb, Fin - Deb) Deb = Fin + 1 Fin = InStr(Deb, Doc, "& Bal & "") If Fin > 0 Then Txt = Mid(Doc, Deb, Fin - Deb) 'entete de colonne cad bal Set C = .Rows(1).Find(Bal, , , xlWhole) If C Is Nothing Then If .Cells(1, 1) = "" Then Set C = .Cells(1, 1) Else Set C = .Cells(1, .Columns.Count).End(xlToLeft).Offset(, 1) End If 'on copie l'entete dans une cellule C.Value = Bal End If freeLine = .Cells(.Rows.Count, C.Column).End(xlUp).Row + 1 .Cells(freeLine, C.Column) = Txt End If Loop .Columns.AutoFit End With WordDoc.Close WordApp.Quit Set WordDoc = Nothing Set WordApp = Nothing End Sub
djamat
Messages postés
31
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 mai 2013
28
21 mai 2013 à 15:06
21 mai 2013 à 15:06
Merci Patrice, ca à l'air de fonctionner. Je continue à adapter ton code au mien et ca devrait etre bon.
Merci pour ton aide!!
Merci pour ton aide!!
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
21 mai 2013 à 15:12
21 mai 2013 à 15:12
Il est préférable de refermer le document aussitôt lu :
'ouverture du fichier Word Set WordDoc = WordApp.Documents.Open(fichier) Doc = WordDoc.Range WordDoc.Close WordApp.Quit Set WordDoc = Nothing Set WordApp = Nothing 'initialisation pointeur ......
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
djamat
Messages postés
31
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 mai 2013
28
22 mai 2013 à 10:40
22 mai 2013 à 10:40
J'aurai un petit dernier service à vous demander:
Je dois inserer mes chaines de textes dans differentes cellule selon la position de la derniere.
Cad si on a ecrit en B2, et que l'on recuperer une chaine à mettre en C alors la chaine sera en C3 et non sur la premiere ligne vide de la colonne. Et la je bug.
Un exemple en attachement du rendu souhaite.
<a href="https://www.casimages.com/f.php?f=130522104242423699.xls" target="_blank">Lien vers mon fichier</a>
Si vous auriez une idee, je suis preneur.
PS: je rappelle que mon niveau en VBA nest pas extraordinaire ...
Je dois inserer mes chaines de textes dans differentes cellule selon la position de la derniere.
Cad si on a ecrit en B2, et que l'on recuperer une chaine à mettre en C alors la chaine sera en C3 et non sur la premiere ligne vide de la colonne. Et la je bug.
Un exemple en attachement du rendu souhaite.
<a href="https://www.casimages.com/f.php?f=130522104242423699.xls" target="_blank">Lien vers mon fichier</a>
Si vous auriez une idee, je suis preneur.
PS: je rappelle que mon niveau en VBA nest pas extraordinaire ...
djamat
Messages postés
31
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 mai 2013
28
22 mai 2013 à 11:43
22 mai 2013 à 11:43
Merci Patrice, jetais parti dans des compteur de ligne oups ...
Effectivement cela fonctionne parfaitement, je te remercie et en esperant pouvoir te rendre la meme un jour !!
Effectivement cela fonctionne parfaitement, je te remercie et en esperant pouvoir te rendre la meme un jour !!