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 :

Comparer la chaine de caractère de deux cellules différentes


Sujet :

Macros et VBA Excel

  1. #1
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut Comparer la chaine de caractère de deux cellules différentes
    Bonjour, j'essaie en gros de faire:
    Classeur A Feuille 1:.................Classeur B Feuille 1:
    A............. B...........................A.............B
    Dubois.......12.......................Dubois
    Dupont......14.......................Duboi
    Durant.......16.......................Dupont
    etc......................................Durand
    ...........................................Durant
    J'essaie donc de prendre la premiere cellule(A) du classeur A de la comparer avec les cellules (A) du classeur B et une fois qu'il a trouvé le nom correspondant de recopier la cellule B du classeur A sur la cellule B du classeur B correspondant. Alors je suis dsl j ai essayer de faire au plus clair.Voila ce que j ai mis et il ne veut pas le faire:

    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
    Dim Cel As Range
    Set Cel = Workbooks(Nom_Classeur_VAB).Worksheets("Feuil1").Range("B1")
    Dim Cel2 As Range, Compteur2 As Integer
    Set Cel2 = Workbooks(Nom_Classeur_VarPN).Worksheets(Nom_Feuille_VarPN).Range("B1")
    Compteur2 = 1
     
    For i = 3 To 206
    Do Until IsEmpty(Cel2.Offset(Compteur2))
        If Mid(Cel2.Offset(Compteur2), 1, 13) Like "Mid(Cel.Offset(i), 1, 13)" Then
            'Copier la valeur de la cellule
            Cel.Offset(i, 1).Copy (Cel2.Offset(Compteur2, 21))
            Exit Do
        End If
        Compteur2 = Compteur2 + 1
    Loop
    Next

  2. #2
    Membre régulier Avatar de doringen
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Points : 87
    Points
    87
    Par défaut
    euh, sans être obligé d´utiliser un code VBA, tu peux le faire "en dur" dans la feuille B et utiliser la formule "VLOOKUP" qui donne exactement le résultat souhaité...
    Sinon, j´utilise souvent une combinaison "INDEX(...;EQUIV(...), qui fait le m^me boulot mais est plus flexible d´utilisation

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    ton code ne réagit pas comme tu veux ?
    Il plante ??
    Il compile pas ???

    Essaie cette solution

    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
     
    dim i,j as integer
    dim test as boolean
    i=1
    j=1
    While workbooks(ClasseurA).Sheets(Feuil1).Cells(i,1).value <> ""
      test=true
       while test
           if(workbooks(ClasseurA).Sheets(Feuil1).Cells(i,1).value = workbooks(ClasseurB).Sheets(Feuil1).Cells(j,1).value or workbooks(Classeurb).Sheets(Feuil1).Cells(i,1).value == "") Then 
                    test = false
            else
                   j=j+1
           end if
       wend
    if(workbooks(ClasseurA).Sheets(Feuil1).Cells(i,1).value = workbooks(ClasseurB).Sheets(Feuil1).Cells(j,1).value then workbooks(ClasseurB).Sheets(Feuil1).Cells(j,2).value = workbooks(ClasseurA).Sheets(Feuil1).Cells(i,2).value 
    j=j+1
        i=i+1
    Wend
    je suppose

  4. #4
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Il compile.

    Il ne comprend pas la ligne:
    If Mid(Cel2.Offset(Compteur2), 1, 13) Like "Mid(Cel.Offset(i), 1, 13)"

    Je n'arrive pas a lui faire comprendre de comparer la chaine des caracteres des deux cellules et si elle est la meme la condition if est verifiée

  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    T'a essayé de faire un instr avec ?

    Regarde dans l'aide pour voir comment elle fonctionne..

    Le deuxième Mid, tu as vraiment des guillemets ?

  6. #6
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Le probleme HELIOS est que la cellule n'affiche aucune valeur c'est une chaine de caractère et donc j ai essayer tes lignes elle me mette un message d'erreur.

  7. #7
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par illight
    T'a essayé de faire un instr avec ?

    Regarde dans l'aide pour voir comment elle fonctionne..

    Le deuxième Mid, tu as vraiment des guillemets ?

    Je ne veux pas utiliser Instr car cela m obligerait a determiner la chaine de caractere voulue. Or je ne le souhaite pas je veux qu il le fasse pour toutes les chaines de caractere presentes sur la colonne.

    Et oui c bien des guillemets. Qu ils y soient ou pas ca ne change rien.

    Merci en tout cas mais c NON RESOLU

  8. #8
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Merci en tout cas mais c NON RESOLU
    J'ai presque pas envie de répondre quand je vois ça..


    Essaye d'écrire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if instr(1,Mid(Cel2.Offset(Compteur2), 1, 13),Mid(Cel.Offset(i), 1, 13),vbtextcompare)<> 0 then

  9. #9
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par illight
    J'ai presque pas envie de répondre quand je vois ça..


    Essaye d'écrire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if instr(1,Mid(Cel2.Offset(Compteur2), 1, 13),Mid(Cel.Offset(i), 1, 13),vbtextcompare)<> 0 then

    Je suis dsl ca fait des jours que je suis dessus.
    J'ai remplace ma ligne de code mais j ai toujours la meme erreur '1004'.
    Je te remercie en tout cas. Avec ce que tu m as donne je vais pouvoir eesayer de trouver cette erreur qui me casse les couilles.


  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    je ne comprends pas ce que tu veux dire par chaine de caractères mais bon bref

    SI çà te casse les couilles c'est ton problème mais les gens sur ce forum essaie de t'aider

    A mon avis, entre tes différentes feuilles, il y a des espaces à la fin de tes valeurs
    par exemple, "Dupont " sur la feuille A et "Dupont" sur la feuille B ==> normal qu'il ne retrouve rien puisque ce n'est aps pareil
    Essaie alors de faire un test en utilisant Trim("Dupont ") et Trim("Dupont")
    Ainsi, il va comparer les chaines en ayant pris soin de ne pas compter les espaces qui pourrait être inclu et rendre tes chaines différentes

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    Qund c'est résolu, c'est bien de dire comment t'as fait
    Cà pourrait aider d'autres personnes

    Tu veux de l'aide, OK, c'est le but du forum mais tu as aussi le droit d'en donner en indiquant comment tu as résolu ton problème
    C'est le minimum des choses.....

  12. #12
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par helios77
    Qund c'est résolu, c'est bien de dire comment t'as fait
    Cà pourrait aider d'autres personnes

    Tu veux de l'aide, OK, c'est le but du forum mais tu as aussi le droit d'en donner en indiquant comment tu as résolu ton problème
    C'est le minimum des choses.....
    Ne nous énervons pas. Il me semblait avoir souligné le fait que c'était illight qui m'avait donnée la solution a mon probleme avec ce qu'il a cité cad:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(1, Mid(Cel2.Offset(Compteur2), 1, 13), Mid(Cel.Offset(i), 1, 13), vbTextCompare) <> 0 Then
    En tout cas merci de votre aide.

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

Discussions similaires

  1. Comparer les chaines de caractères de deux fichiers
    Par Ti-EN dans le forum VBScript
    Réponses: 3
    Dernier message: 07/05/2014, 21h37
  2. Réponses: 7
    Dernier message: 15/10/2012, 01h03
  3. Comparaison chaine de caractère dans deux fichiers différents
    Par ghostrider95 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 09/02/2011, 20h25
  4. couper une chaine de caractère en deux ?
    Par fmh1982 dans le forum C++
    Réponses: 3
    Dernier message: 31/03/2007, 18h17
  5. Comparer 2 chaines de caractères
    Par arkem dans le forum Langage
    Réponses: 3
    Dernier message: 16/01/2006, 14h52

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