XL 2010 Recherche de chaînes de caractères

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
 

Yurperqod

XLDnaute Occasionnel
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:

JHA

XLDnaute Barbatruc
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
 

Fab117

XLDnaute Impliqué
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
 

Discussions similaires

Réponses
16
Affichages
1 K
Réponses
6
Affichages
429

Statistiques des forums

Discussions
313 344
Messages
2 097 337
Membres
106 916
dernier inscrit
Soltani mohamed