IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

problème manipulation chaîne des charactères


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Points : 116
    Points
    116
    Par défaut problème manipulation chaîne des charactères
    Bonjour tout le monde!

    Voici mon code, je vous explique après ce qui ne va pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Dim Result As Range
    Dim varCellule, varfirstAddress As Variant
    Dim strParam, strReponse, strcible As String
    Dim strTableau() As String
    Dim i, j, DerniereLigne As Integer
     
    Sheets("Feuil2").Select
    DerniereLigne = Range("C2").CurrentRegion.End(xlDown).Row
     
    For j = 2 To DerniereLigne
     
        strTableau = Split(Cells(j, 3), " ")
     
        'boucle sur le strTableau pour visualiser le résultat
            For i = 0 To UBound(strTableau)
     
     
    'Trouver la première cellule correspondante
    Sheets("Feuil3").Select
    On Error Resume Next
    strParam = strTableau(i)
     
        strcible = "&"
        If strcible = strParam Then
        strParam = strTableau(i + 1)
        End If
     
    With ActiveWorkbook.Sheets("Feuil3")
        Set Result = Range("A:A").Find(What:=strParam)
        varCellule = Result.Value
     
            If varCellule > 0 Then
                MsgBox "Le fournisseur cherché est " & Sheets("Feuil2").Cells(j, 3).Value & _
                ". La correspondance trouvée est " & varCellule & ". Voulez-vous continuer la recherche?", vbYesNo
                If strReponse = vbNo Then
                    Sheets("Feuil2").Cells(j, 4).Value = varCellule
                End If
            End If
    End With
     
    'Trouver les cellules correspondantes suivantes
        If Not Result Is Nothing Then
            varfirstAddress = Result.Address
            Do
                MsgBox "Le fournisseur cherché est " & Sheets("Feuil2").Cells(j, 3).Value & _
                ". La correspondance trouvée est " & varCellule & ". Voulez-vous continuer la recherche?", vbYesNo
                If strReponse = vbNo Then
                    Sheets("Feuil2").Cells(j, 4).Value = varCellule
                End If
                Set Result = Range("A:A").FindNext(Result)
                varCellule = Result.Value
            Loop While Not Result Is Nothing And Result.Address <> varfirstAddress
        End If
     
            Next i
    Next j
     
    End Sub
    En fait ça tourne bien jusqu'à ce que j'ai décidé de banir la recherche sur certains caractères ou mots qui sont recurrents et qui ont peu de signification. C'est là que j'ai déclaré strcible pour essayer de faire "sauter" le code à ce niveau.
    Mon premier problème c'est qu'en passant à strTableau(i+1), une fois que le code a terminé les vérifications sur cette chaîne, il recommence avec la même (next i), puis lorsqu'il passe à la prochaine cellule (next j), là il sort des vérifs et ne fait que passer à la cellule suivante (2ème problème). Ma question est donc commen faire pour banir certaines chaînes efficacement?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Avec un Goto?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ' Remplacer par strParam = strTableau(i + 1)
    Goto ProchainMot
     
    ' (...) Et mettre juste avant le next i
     
    ProchainMot:
            Next i

  3. #3
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Points : 116
    Points
    116
    Par défaut
    Merci dadavyvy ça marche! En revanche, je me rends compte qu'arrivé à j=3, le code passe à la prochaine cellule quoi qu'il arrive, donc là je le remets manuellement au même endroit (strTableau = Split(Cells(j, 3), " ")) et il repart !?!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Euh... à quelle valeur de j?
    Et qu'y a-t-il alors dans Cells(j, 3) ?

  5. #5
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Points : 116
    Points
    116
    Par défaut
    en fait c'est des conneries même si je le remets il saute à next j et c'est au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 0 To UBound(strTableau)
    Pour j = 3 donc (3ème ligne). cells(j,3) (toute la colonne) il y a que du string!

  6. #6
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Points : 116
    Points
    116
    Par défaut
    qu'est-ce que je peux être c.. , en fait en passant à la prochaine cellule, je n'étais pas dans la bonne feuille. du coup normal il ne trouve rien! merci pour le goto en tout cas

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Oui, mais qu'y a-t-il comme texte dans C3?
    Ca veut dire quoi il passe à la prochaine cellule? Le code est déroulé et il ne trouve tout simplement pas le texte de la cellule C3 dans la colonne A?

    Attention, tu voulais surement écrire (avec un point devant le Range) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With ActiveWorkbook.Sheets("Feuil3")
        Set Result = .Range("A:A").Find(What:=strParam)

  8. #8
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Points : 116
    Points
    116
    Par défaut
    Comme je disais dadavyvy, je n'étais pas sur la bonne feuille, du coup toutes les cellules parcourues étaient vides et le code ne faisait que passer de cellule en cellule.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TNT] Problème de réceptivité des chaînes
    Par Jean-Michel Ormes dans le forum Films & TV
    Réponses: 12
    Dernier message: 10/06/2008, 16h38
  2. Réponses: 9
    Dernier message: 26/09/2007, 17h21
  3. Réponses: 10
    Dernier message: 19/09/2006, 10h44
  4. Réponses: 1
    Dernier message: 06/03/2003, 11h57
  5. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo