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 :

[E - 03] Macro : Problème avec xlWhole ou xlPart


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Par défaut [E - 03] Macro : Problème avec xlWhole ou xlPart
    Bonjour a tous,

    j'ai un léger problème du au fait que je ne connais pas bien VBA
    J'ai une macro qui me trouve des différences entre deux plages sur deux onglets et met les différences en rouge.

    Pour les chiffres, cette macro fonctionne très bien !
    En revanche, j'aimerais la faire tourner sur une colonne de 500 lignes, ou chaque cellule contient un Nom et un prénom.
    Le problème est que dans l'onglet 1, les cellules sont sous la forme :

    Jean Baptiste Chevalier
    Pierre de Machin
    etc.


    et dans l'onglet 2 :

    Chevalier Jean Baptiste
    de Machin Pierre


    Ainsi, ma macro me détecte des erreurs partout, car elle cherche un contenu exact.

    Voici la macro en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub colorier()
     
    For Each cel In Range("H1:H300")
    Set absent = Range("'2'!H1:'2'!H300").Find(cel, LookIn:=xlValues, LookAt:=xlWhole)
    If absent Is Nothing Then
    cel.Interior.ColorIndex = 3
    End If
    Next
     
    End Sub


    Voyez vous quelquechose a faire sur la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Find(cel, LookIn:=xlValues, LookAt:=xlWhole)
    afin que cela fonctionne ?

    D'avance merci !

    Cordialement

  2. #2
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour documentation le forum as tu essaye seulement comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Find(cel, LookIn:=xlValues)
    autrement cree une coloms temporaire extraire la parti de gauche ou de droite &comparer

    salutations

  3. #3
    Membre averti
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Par défaut
    j'ai essayé avec ce code, ca ne fonctionne pas je sais pas pourquoi

    Je peux effectivement créer une colonne mais en fait je travaille sur un "outil de comparaison" pour quelqu'un de ma société qui veut juste effectuer des controles de temps à autre et qui veut juste avoir à lancer ttes les macros...
    Donc l'idéal serait que tout soit sous forme de macro.

  4. #4
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    rebonjour tu peus cree le code de la colonne par macro.??

    salutations

  5. #5
    Membre averti
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Par défaut
    re bonjour laetitia

    je ne comprends pas très bien ta question

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Laetitia a parlé de colonne temporaire, ce qui veut dire que tu la crée pour tes besoins et tu la détruit ensuite par macro sans doute...

    Mais comme tu l'énonces au départ le souci va bien au-delà d'une simple inversion nom-prénom :
    ean Baptiste Chevalier
    Pierre de Machin
    etc.


    et dans l'onglet 2 :

    Chevalier Jean Baptiste
    de Machin Pierre
    avec Machin...
    sans entrer dans une usine à gaz... ce qui serait une solution intermédiaire possible serait de convenir que dans l'onglet 1, les noms sont en dernière place et de ne faire des recherches que sur cette partie dans toutes les chaînes de la colonne de l'onglet 2. Pas fiable à 100%, mais très correct si la saisie est homogène en cet endroit.

    cordialement,

    Didier

  7. #7
    Membre averti
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Par défaut
    Merci de ta réponse.

    Pense tu qu'il est facile de créer une macro qui garderait d'une colonne de cellule a chaque fois uniquement le mot de gauche (ou de droite) ?

    car si j'ai le nom de famille uniquement, je peux faire tourner ma macro de comparaison.

  8. #8
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    bonjour,

    oui, vois dans l'aide vba notamment à :

    InStr
    InStrRev
    Mid
    Left
    Right... bref les fonctions de chaînes

    Le principe étant de trouver, par exemple le 1er espace en partant de la droite (InStrRev) et de t'en servir avec (Right) pour récupérer le dernier mot...
    di les séparateurs de nom peuvent varier, tu adaptes, mais "Roche-Tanguy" serait surement à traiter en 1 mot...

    cordialement,

    Didier

  9. #9
    Membre averti
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Par défaut
    Merci Didier

    Sinon j'ai trouvé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim cell as Range
    For Each cell In Selection
    cell = Split(cell, " ", 2)
    Next cell


    Cela conserve le premier mot de ma cellule.

    Voyez vous un moyen de garder le dernier mot ?

    Ce serait parfait car ca le conserverait dans la même cellule et je n'aurais qu'à garder le premier mot dans un onglet, le dernier dans l'autre, et hop je compare !

  10. #10
    Membre averti
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Par défaut
    j'ai réussi !

    Pour info pour récupérer le dernier mot je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Split(maChaine,monSep)(UBound(Split(maChaine,monSep)))

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

Discussions similaires

  1. [Macro] Problème avec variable sous Mainframe
    Par benjisan dans le forum Macro
    Réponses: 2
    Dernier message: 28/11/2008, 13h45
  2. Problème avec une macro faisant apel à un tableau Excell
    Par valouche dans le forum Macros et VBA Excel
    Réponses: 52
    Dernier message: 19/06/2007, 12h38
  3. [Macro]Problème d'importation .CSV avec macro
    Par Eric Harvey dans le forum VBA Access
    Réponses: 8
    Dernier message: 12/04/2007, 17h04
  4. problème avec const char * et #define macro
    Par CodeurNé dans le forum C
    Réponses: 5
    Dernier message: 20/09/2006, 21h25
  5. Réponses: 7
    Dernier message: 11/07/2006, 09h31

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