[VBA Ragexp] Récupérer le contenu avant et après un Pattern
Résolu/Fermé
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
-
Modifié par lml-mike le 4/11/2013 à 17:30
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 5 nov. 2013 à 13:47
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 5 nov. 2013 à 13:47
A voir également:
- [VBA Ragexp] Récupérer le contenu avant et après un Pattern
- Recuperer message whatsapp supprimé - Guide
- Comment récupérer un compte facebook piraté - Guide
- Recuperer video youtube - Guide
- Le fichier à télécharger correspond au contenu brut d’un courrier électronique. de quel pays a été envoyé ce message ? - Guide
- Comment récupérer un document dans le presse-papier samsung - Guide
3 réponses
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
121
Modifié par lml-mike le 5/11/2013 à 10:00
Modifié par lml-mike le 5/11/2013 à 10:00
Merci pour ta réponse !
J'ai remplacé Response.write par une msgbox parce qu'elle provoquait une erreur.
Le split ne détecte pas le \n, i renvoie donc 0 et la cellule entière est affichée.
Ai-je omis un détail ?
J'ai remplacé Response.write par une msgbox parce qu'elle provoquait une erreur.
Le split ne détecte pas le \n, i renvoie donc 0 et la cellule entière est affichée.
Ai-je omis un détail ?
Doctor C
Messages postés
627
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
19 février 2016
398
4 nov. 2013 à 22:08
4 nov. 2013 à 22:08
Je n'utiliserais pas d'expression régulière pour ce genre de travail, le SPLIT semble mieux indiqué. La fonction SPLIT permet de séparer une chaîne de caractères selon un délimiteur. Chaque expression séparée par un séparateur sera placée dans un tableau.
Voici un exemple d'utilisation:
Bonne chance!
Voici un exemple d'utilisation:
Dim arrCommentaires
Dim strValeur
strValeur = "> Commentaire 1\n> Commentaire 2\n> Commentaire 3"
arrCommentaires = Split(strValeur, "\n")
Dim i
For i = 0 to Ubound(arrCommentaires)
Response.Write i & " = " & arrCommentaires(i) & "<BR>"
Next
Bonne chance!
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
121
Modifié par lml-mike le 5/11/2013 à 12:09
Modifié par lml-mike le 5/11/2013 à 12:09
Je me suis permis de garder Ragexp pour en profiter en supprimant les "> " dans les commentaires afin de mieux présenter les commentaires.
Le contenu de la cellule peut être :
ou
Mon code est le suivant :
Maintenant, il me manque à foutre toutes les occurences myMatch dans une variable incrémentale...
J'aimerais le faire via un tableau, mais même étant dynamique, je ne peut pas déclarer la taille du tableau à l'avance. Je ne peux même pas utiliser mymatches.count, vu qu'il est 3x supérieur au nombre de commentaires...
Une idée sur comment je peux assigner chaque mymatch à commentaire_n, n étant incrémental ?
Le contenu de la cellule peut être :
Commentaire 1
ou
> Commentaire 2
> Commentaire 3
> Commentaire 4
> Commentaire n (le nombre est variable)
Mon code est le suivant :
Private Sub CommandButton1_Click()
Dim myRegExp As RegExp
Dim myMatches As MatchCollection
Dim myMatch As Match
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = "(> )|(.*)"
Set myMatches = myRegExp.Execute(Cells(3, 4))
For Each myMatch In myMatches
If myMatch <> "> " And myMatch <> "" Then
MsgBox myMatch
End If
Next
End Sub
Maintenant, il me manque à foutre toutes les occurences myMatch dans une variable incrémentale...
J'aimerais le faire via un tableau, mais même étant dynamique, je ne peut pas déclarer la taille du tableau à l'avance. Je ne peux même pas utiliser mymatches.count, vu qu'il est 3x supérieur au nombre de commentaires...
Une idée sur comment je peux assigner chaque mymatch à commentaire_n, n étant incrémental ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 759
5 nov. 2013 à 12:25
5 nov. 2013 à 12:25
Oui, une idée : revoir le cours sur les variables tableaux ;-)
Il te faut redimensionner ta variable tableau à chaque occurence valide. Pour cela, il convient d'utiliser ReDim et Preserve.
Comme ceci :
Un petit rappel sur les variables tableaux, pour quand tu auras un peu de temps...
Il te faut redimensionner ta variable tableau à chaque occurence valide. Pour cela, il convient d'utiliser ReDim et Preserve.
Comme ceci :
Dim myRegExp As RegExp
Dim myMatches As MatchCollection
Dim myMatch As Match
Dim monTab() As String
Dim indTab As Integer
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = "(> )|(.*)"
Set myMatches = myRegExp.Execute(Cells(3, 4))
For Each myMatch In myMatches
If myMatch <> "> " And myMatch <> "" Then
ReDim Preserve monTab(indTab) 'redimensionnement de la variable tableau
monTab(indTab) = myMatch 'stockage de sa valeur en mémoire
indTab = indTab + 1 'incrémentation de l'indice de la variable tableau
End If
Next
'boucle sur la variable tableau
For indTab = 0 To UBound(monTab)
Debug.Print monTab(indTab)
Next
Un petit rappel sur les variables tableaux, pour quand tu auras un peu de temps...
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
121
5 nov. 2013 à 13:41
5 nov. 2013 à 13:41
J'avais utilisé ce même tableau comme référence pour la création de mon tableau dynamique, mais je n'avais pas eu la logique de penser que je pouvais incrémenter simplement via un ++ au lieu d'un "For"... Comme quoi je suis vraiment rouillé !
Je vais pouvoir finir mon code grâce à ça ! Merci beaucoup pour l'aide et les références qui sont maintenant bookmarkées ^_^
Excellente journée !
Je vais pouvoir finir mon code grâce à ça ! Merci beaucoup pour l'aide et les références qui sont maintenant bookmarkées ^_^
Excellente journée !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 759
5 nov. 2013 à 13:47
5 nov. 2013 à 13:47
De rien.
Merci et bonne journée à toi également.
A+
Merci et bonne journée à toi également.
A+
5 nov. 2013 à 10:10
Regarde ce tutoriel de Caféine.
Et plus particulièrement le chapitre sur les méthodes.
Reviens en cas de besoin, mais tu connais la maison...
5 nov. 2013 à 10:28
Cependant je n'ai pas encore la logique sur le choix des symboles...
Je vais potasser dessus, merci !
Modifié par lml-mike le 5/11/2013 à 10:46
Je cherche un moyen d'exclure les retour à la ligne via le tuto.
5 nov. 2013 à 10:50
Je sens que je vais finir avec une camisole xD
5 nov. 2013 à 11:02
Ben oui...
Alors pourquoi ne pas utiliser Split...
Comme ceci :