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 :

VBA Comparer deux tableaux (array of string )


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
    Mai 2013
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 13
    Par défaut
    Bonjour.
    J'ai un problème dans une macro VBA qui a pour rôle de comparer deux tableaux (array of string ) et de stocker les données identiques dans une variable.
    j'ai procédé comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ct = -1
        For i = 3 To RowCount
            If objsheet.Cells(i, 4) <> "-" Then
                ct = ct + 1
                ReDim Preserve VarExcel(ct)
                VarExcel(ct) = objsheet.Cells(i, 7)
            End If
        Next i
    Cette boucle sert à extraire les données excel qui vont servir à faire la comparaison avec la variable VarFile après. Ces données sont stockées dans la variables VarExcel.
    Puis, j'effectue la comparaison entre VarFile et VarExcel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cpt = -1
        For j = 1 To UBound(VarFile)
            For k = 0 To UBound(VarExcel)
                If InStr(VarFile(j), VarExcel(k)) Then
                    cpt = cpt + 1
                    ReDim Preserve ch1(cpt)
                    ch1(cpt) = VarFile(j)
                  Debug.Print ch(cpt)
                End If
            Next k
        Next j
    Mon problème est que la variable ch est exactement identique à Varfile alors qu'elle doit normalement ne contenir que les "cases" de VarFile si InStr(VarFile(j), VarExcel(k)).

    SVP aidez moi, j'arrive pas à identifier le problème et c'est vraiment urgent.
    Merci

    Re-salut

    alors y a personne pour m'aider ?
    si mon message n'est pas tout à fait clair, que quelqu'un me le dise pour que j'essaye de réexpliquer.

    SVP je cherche une réponse en urgence car je suis bloqué et je ne peux pas avancer dans le développement de mon application avant que je résolve ce problème.

    Merci à l'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Faut pas t'impatienter comme ça, tu n'es pas tout seul ici. "VarFile", c'est quoi ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ne faudrait-il pas tester le résultat de :
    If InStr(VarFile(j), VarExcel(k)) Then
    Ci-dessous, l'aide de la fonction Instr



    Si la chaîne est trouvée, le résultat est > 0.

    Pas sûr, à tester.


    Cordialement.

  4. #4
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 13
    Par défaut
    Merci Daniel.C et Eric KERGRESSE pour vos réponses.

    Daniel, je fais une course contre la montre pour terminer mon application à temps c'est pour cela que je ne m'impatiente un peu. et tu as raison, y a pas que moi qui demande de l'aide sur ce forum.
    Alors VarFile est un array de string (variable où j'ai stocker des données extraites à partir d'un fichier texte). A tire d'exemple:
    VarFile (1) = "Anne : femme 34ans;"
    VarFile (2) = "jean : homme 50ans;"

    Désolée Eric,mais j'ai pas tout à fait saisi ta remarque :/

  5. #5
    Invité
    Invité(e)
    Par défaut
    En suivant le raisonnement de mon message, il faut que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If InStr(VarFile(j), VarExcel(k))>0 Then
    Dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cpt = -1
        For j = 1 To UBound(VarFile)
            For k = 0 To UBound(VarExcel)
                If InStr(VarFile(j), VarExcel(k))>0 Then
                    cpt = cpt + 1
                    ReDim Preserve ch1(cpt)
                    ch1(cpt) = VarFile(j)
                  Debug.Print ch(cpt)
                End If
            Next k
        Next j

  6. #6
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 13
    Par défaut
    Merci Eric pour la clarification
    Mais ça ne fonctionne toujours pas càd même résultat avec ou sans la condition >0 !!

  7. #7
    Invité
    Invité(e)
    Par défaut
    As-tu un classeur exemple sans données confidentielles avec ton code VBA ?

    Cordialement.

Discussions similaires

  1. [XL-2007] comparer deux tableaux avec VBA
    Par anstech dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2014, 14h36
  2. Comparer deux tableaux de String
    Par ziad.shady dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 09/09/2008, 09h44
  3. comparer deux chaines ansistrin ou string .
    Par supersoft5 dans le forum C++Builder
    Réponses: 6
    Dernier message: 24/05/2007, 14h02
  4. comparer deux tableaux
    Par djibril dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2005, 15h26

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