[Catégorie modifiée VB6 --> VBA] Help me, impossible de me dépatouiller !!!

damienv69330 Messages postés 2 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 18 août 2010 - 17 août 2010 à 18:40
damienv69330 Messages postés 2 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 18 août 2010 - 18 août 2010 à 08:47
Bonjour,

Je n'arrive pas à trouver un moyen de tester certains caractère dans une chaine de caractères ... Je m'explique par un exemple concret :

Dans une colonne, j'ai des ref de produit qui ont des noms assez "bizare" et qui ne se ressemblent pas. Par contre, il y a obligatoirement le code "73" ou "72" ou "33" ou "30" (Je ne vais pas tous vous les faire mais il y en a une petite dizaine).
J'aimerais donc tester la chaine de caractère et extraire le code pour le mettre sur la cellule d'à côté ...

Je ne sais pas si je suis très clair et vais donc essayer de préciser encore plus par un exemple.

A1 : A 055 URD 32 LI 1600
B1 : CC 4,5 GRB 73 TTF 07
C1 : 2 URD 33 TTF

J'aimerais que :
A2 : 32
B2 : 73
C2 : 33

Merci grandement pour votre aide qui me sera précieuse car je me casse la tête depuis ce matin et mes très maigres compétences ne me permettent pas de résoudre ce problème.

7 réponses

ccito Messages postés 67 Date d'inscription mercredi 5 mai 2010 Statut Membre Dernière intervention 20 mai 2011 1
17 août 2010 à 19:27
Salut damienv69330,

Essai ceci :

        Dim Ref As String
        Dim Code As String
        Dim Resultat As String

        Ref = "A 055 URD 32 LI 1600"

        For i = 0 To Ref.Length - 2
            Code = Ref.Substring(i, 2)
            If Code "32" Or Code "73" Then 'Compléter les OR
                Resultat = Ref
                Exit For
            End If
        Next


Tu charge le texte contenu dans ta cellule dans la variable Ref.

Le principe est de faire une boucle dans laquel tu balai toutes les conbinaisons de 2 caractères puis tu mémorise le résultat une fois le code touvé.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 août 2010 à 20:29
@ccito : je pense que ton code est du VB.Net, alors damien a posté en VB6 alors que ma boule de cristal me dit qu'il est en VBA.
0
ccito Messages postés 67 Date d'inscription mercredi 5 mai 2010 Statut Membre Dernière intervention 20 mai 2011 1
17 août 2010 à 21:48
jack, je suis d'accord avec toi cela dit le principe de cette boucle que je propose peut trés bien s'appliqué dans tous les languages.

Je ne connait pas les syntaxes exacte de VBA mais je suis sur qu'on peut extraire une partie d'une variable String.

Je vais faire des recherches
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
17 août 2010 à 21:54
Salut,

Jack a raison :

For i = 0 To Ref.Length - 2


et

Code = Ref.Substring(i, 2)


Sont du VB.Net, en vb6 ce serait :

For i = 0 To Len(Ref)- 2


et

Code = Mid$(Ref, i, 2)


Pour la syntaxe, mon vb6 est loin désolé s'il y a erreur.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccito Messages postés 67 Date d'inscription mercredi 5 mai 2010 Statut Membre Dernière intervention 20 mai 2011 1
17 août 2010 à 22:35
Après quelque recherche je peut vous fournir le code en VBA.

Dim Ref As String
Dim Code As String
Dim Resultat As String
Dim fin As Long

Ref = ActiveSheet.Cells(1, 1)

fin = Len(Ref) - 1

For i = 1 To fin
    Code = Mid(Ref, i, 2)
    
    Select Case Code
        Case 32, 73
            Resultat = Ref
            Exit For
    End Select
Next i


Ce code a en plus l'avantage d'utiliser la fonction Select qui permet de lister facilement les valeurs recherchées.
0
ccito Messages postés 67 Date d'inscription mercredi 5 mai 2010 Statut Membre Dernière intervention 20 mai 2011 1
17 août 2010 à 22:37
Pour info, le premier code fournie a été ecrit sous VB2008 Express
0
damienv69330 Messages postés 2 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 18 août 2010
18 août 2010 à 08:47
Merci beaucoup pour vos réponses => je vais essayer ca tout de suite ...
Je suis nul en VBA et le suis resté jusqu'au bout car me suis même trompé dans la rubrique de mon poste en VB6 / VBA ...
On en change pas une équipe qui perds comme dirait Raymond

Je vous tiens au courant.

Merki
0
Rejoignez-nous