XL 2010 Recherche de chaînes de caractères

  • Initiateur de la discussion Initiateur de la discussion Fab117
  • 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 !

Fab117

XLDnaute Impliqué
Salut,

Dans ma page Excel, je souhaiterais récupérer tous les chiffres contenus dans une chaîne de caractères "GTexts(xx)" (où xx est le nombre à récupérer et à coller dans un autre onglet; de 1 à 999)

Je me suis déjà pas mal aidé du forum pour construire l'usine à gaz ci-dessous, mais ça ne fonctionne pas:


Code:
Dlig = ActiveSheet.UsedRange.Rows.Count
Dcol = ActiveSheet.UsedRange.Columns.Count
For i = 1 To Dlig ' Boucle sur les lignes
    For j = 1 To Dcol ' boucle sur les colonnes
        If (Cells(i, j) Like "*GTexts(*") Or (Cells(i, j) Like "*gtTexts(*") Or (Cells(i, j) Like "*Gtexts(*") Or (Cells(i, j) Like "*gTexts(*") Then
            DebutChaineGTexts = InStr(1, Cells(i, j), "GTexts", 1)
            DebutChaineACopier = DebutChaineGTexts + 7
            SelectionChaineDeCaractereDInteret = Mid(Cells(i, j), DebutChaineACopier, 3)
            ' Jusque là, ça va (le chiffre faisant de 1 à 3 caractères, je prends le pire cas et je retrairerai plus loin
            ' Après ça se gâte, car comme dans une même cellule, il peut y avoir plusieurs fois la une chaîne de caractères "GTexts(xx)", mon idée était remplacer celle que je venais de prendre par d'autres caractères et de faire un j = j-1 pour qu'il rescanne la même cellule
            St = Cells(i, j)
            Mid(St, DebutChaineGTexts, 6) = "xxxxxx"
            j = j - 1
            ' Mais ça ne fonctionne pas, les caractères ne sont pas remplacés
        End If
    Next j
Next i


Quelqu'un aurait-il la solution à mon problème ?

Merci d'avance et excellente après-midi.


Fab
 
Bonjour le forum

Une solution possible sans macro
1) utiliser Données/Convertir avec comme séparateur (
2) utiliser Données/Convertir avec comme séparateur )

Ce qui donnerait en macro VBA
VB:
Sub MacroTest()
Selection.TextToColumns Destination:=Range("B1"), _
DataType:=xlDelimited, Other:=True, OtherChar:="(", FieldInfo:=Array(Array(1, 9), Array(2, 1)), TrailingMinusNumbers:=True
Selection.Offset(, 1).TextToColumns Destination:=Range("B1"), _
DataType:=xlDelimited, Other:=True, OtherChar:=")", FieldInfo:=Array(Array(1, 1), Array(2, 9)), TrailingMinusNumbers:=True
End Sub
Avec des données en colonne A (et la colonne A sélectionnée) , la macro ci-dessus extrait les chiffres en colonne B.
 
Dernière édition:
Bonjour à tous,

Il y a une fonction personnalisée pour trouver les chiffres (à mettre dans un module
Syntaxe: =chiffres(A1)

Code:
Function Chiffres(Texte)
Set Résultat = CreateObject("vbscript.regexp")
Résultat.Pattern = "[^0-9]"
Résultat.Global = True
Chiffres = 1 * Résultat.Replace(Texte, "")
End Function

JHA
 
Salut,
Merci à vous deux d'avoir pris le temps pour m'aider.
Malheureusement, ça ne fonctionne pas.
J'aurais dû être plus clair dans ma description.
En fait, ma feuille Excel contient un copier/coller d'un programme VB que je suis en train de faire.
Il y a donc une multitude de lignes et une foule d'informations.
Il y donc plein d'autres chiffres et d'autres parenthèses que celles de "GTexts(xx)".
De plus certaines lignes peuvent comporter plusieurs "GTexts(xx)"
  • Avec l'exemple "MacroTest", je récupère tout les contenus entre parenthèses et pas seulement ceux de GTexts. De plus, s'il y a plus qu'une paire de parenthèses par cellule, il "bugg" dès la 2ème paire.
  • Avec la fonction, il récupère tous les chiffres et pas seulement ceux de GTexts et s'il y en a plusieurs dans la cellule, il les met ensemble
Y aurait-il une autre approche ?

Notamment, si je continue mon usine à gaz, sauriez-vous pourquoi la ligne
Code:
Mid(St, DebutChaineGTexts, 6) = "xxxxxx"
ne fonctionne pas ?

Bonne fin d'après-midi.

Fab
 
- 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

Discussions similaires

Réponses
16
Affichages
2 K
Réponses
2
Affichages
1 K
Réponses
6
Affichages
667
Retour