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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    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 éclairé Avatar de doringen
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    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 chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    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
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    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 344
    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 344
    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 ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  6. #6
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    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

  7. #7
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    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 344
    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
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  8. #8
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    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.

+ 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