Regular Expression Condition IF VBA
Bonjour à tous,
"Résolu, voir Edit en fin de page"
Petit message, parce que je tourne en rond, je tente des trucs mais ça ne veut jamais aller comme je souhaite.
La solution est surement très simple, mais j'avoue qu'étant débutant, j'ai encore du mal avec certaines facettes de VBA.
Mon problème est très simple :
1) Je souhaite trouver dans la feuille Macro BallyRagget et la colonne B, toutes les cases où il y'a une nombre à 6 chiffres.
2) Je dois parcourir la colonne et si il trouve un nombre correspondant, il me le recopie dans la feuille Data. J'ai spécifié un endroit au hasard.
==> le problème vient surtout du regular expression. J'ai déjà du en faire avec python, mais y'a longtemps et mes souvenirs sont maigres. De plus, j'ai l'impression de voir des choses différentes à chaque fois que j'essaye de trouver des exemples ^^
Après, y'a encore énormément de boulot pour ce à quoi je veux arriver, mais je ne vous solliciterai que si je bloque.
ps: 2ième question juste plus pour info. Quelle technique utiliser pour le débug? ici, j'ai juste utiliser la formule MsgBox, pour voir la valeur à chaque boucle et voir si je suis dans le bon. Mais dois surement avoir des outils plus pratique. Ici c'est juste pour me permettre d'avancer seul et résoudre mes problèmes seul ^^
Je joins le fichier.
Merci pour vos conseils et aide
EDIT: Je suis prêt à accepter les coups de fouets.... Ca fonctionnait en fait..... mais je renouvellais toujours mon code sans effacer ce qui avait été fait avant. et donc j'avais l'impression qu'il écrivait toujours tout sans faire de distinction entre texte et nombre mais ça fonctionne.....
Autant pour moi!!!
Bonjour,
Une solution :
Public Sub recherchelot()
Dim J As Integer
Dim VRech As Variant
Dim WS As Worksheet
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
Set WS = Sheets("Macro BallyRagget")
J = 1
regex.Pattern = "\d{6}" ' "[0-9]+"
For J = 1 To 30 '!!!!30 cycle est suffisant mais trouver une solution meilleur!!!!!
Stop ' instruction de débogage ensuite F8, F8, F8 ou F5, F5, F5...
'Sheets("Macro BallyRagget").Activate 'Pour boucler sur la bonne feuille
VRech = WS.Cells(J, 2) 'A integrer dans regex.test si possible
Debug.Print VRech ' instruction de débogage
If regex.Test(VRech) Then
Sheets("Data").Cells(20 + J, 2) = VRech
End If
Next
End Sub
A+
Merci pour la réponse, je testerai.
Donc ce code, là c'est dans l'optique d'un débugage, pour repérer où se situe l'erreur et pouvoir la corriger.
Merci!