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 :

Equivalent rechercheV et doublons [VBA]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 8
    Par défaut Equivalent rechercheV et doublons [VBA]
    Bonjour à tous,

    Débutant en VBA, et après des recherches, je suis bloqué sur deux points de mon petit programme qui devrait permettre une mise en forme d'une feuille Excel.

    - Mon classeur contient deux feuilles. La première feuille contient des informations sur les colonnes A à K et la seconde sur les colonnnes A,B et C.
    La colonne K a été remplie à partir de K10 à partir de la formule suivante : =RECHERCHEV(F10;Feuil1!A:C;2;FAUX)
    Ensuite, j'ai étiré jusqu' à la fin de la feuille afin d'obtenir les valeurs souhaitées pour le reste.
    Je souhaiterai que cette opération soit automatisée via une macro qui permette de faire cette recherche lors de chaque changement de la feuille. J' ai regardé la fonction vlookup mais je n'arrive pas au résultat voulu, certainement du à un problème de synthaxe.

    - Ensuite, une macro va permettre de mettre en forme les deux feuilles sur une seule . Je souhaite supprimer toutes les lignes en doublon ( colonnes B et C identiques). Je sais qu'il est possible de le faire via "Données">"Supprimer les doublons" mais je souhaiterai faire cette opération sur lancement d'une macro. Mon code fonctionne pour un faible nombre de lignes, mais lorsque le nombre de lignes est élevé (ici environ 20 000) l'application met beaucoup de temps pour effectuer la recherche.

    Merci de m'aiguiller un peu sur les possibilités.
    Cordialement, Simon

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Par défaut
    Bonjour,

    Tu devrais essayer quelque chose qui ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function Look_for(Valeur_cherchee As Variant, Plage_recherche As Range, Decalage As Integer)
    Look_for = Plage_recherche.Find(Valeur_cherchee).Offset(0, Decalage)
    End Function
    Sub test_look_for()
    MsgBox Look_for(Range("D2"), Range("A4:A8"), 1)
    End Sub
     
    Sub Dedoublonnage(Plage As Range)
    Plage.RemoveDuplicates Columns:=1, Header:=xlNo
    End Sub
    La première fonction fait comme un rechercheV, sauf qu'elle ne peut pas rendre de valeur approximative, et le décalage est de 1 au lieu de 2 pour rendre la valeur située dans la colonne à droite etc. Essaie ce sera plus simple à comprendre

    La deuxième est crée via enregistreur de macro et dédoublonne la plage selon sa première colonne.


    Cordialement

    Mr Poulpe

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 8
    Par défaut
    Bonjour,

    Merci pour la réponse aussi rapide. Je suis en train d'essayer d'adapter la première fonction à mon problème.

    Je ne comprend pas la deuxième par contre, je renseigne plage comment?

    Merci

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Par défaut
    Il est nécessaire de l'appeler depuis une autre procédure en renseignant la plage à dédoublonner en argument.

    Par exemple avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub TEST2
    Dedoublonnage(sheets(2).usedrange)
    End sub
    Poulpe

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 8
    Par défaut
    Super, merci beaucoup
    est-il possible de considérer les doublons que si deux colonnes ( ex: B et C) sont identiques ?
    exemple:
    B C
    jean 1
    robert 2
    michel 1
    jean 4
    jean 1

    ou seule la dernière ligne serait supprimée...

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Par défaut
    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Dedoublonnage(Plage As Range)
    Plage.RemoveDuplicates Columns:=1, Header:=xlNo
    End Sub
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Dedoublonnage(Plage As Range)
    Plage.RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo
    End Sub
    Oups, petit correctif sur ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Look_for(Valeur_cherchee As Variant, Plage_recherche As Range, Decalage As Integer)
    Look_for = Plage_recherche.Find(Valeur_cherchee, , xlValue, xlWhole).Offset(0, Decalage)
    End Function
    Tu risques de tomber sur des résultats bizarres sinon...

Discussions similaires

  1. Equivalent recherchev, sous vba, entre deux fichiers et avec plusieurs critères
    Par Gallinettechouette dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/07/2013, 13h01
  2. Equivalent de =Mois en vba
    Par luz_negra dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/12/2007, 05h20
  3. [VBA Excel] Equivalent Eval VB en VBA ?
    Par baselunaire dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/02/2007, 08h32
  4. equivalent de break en vba access
    Par celiaaa dans le forum Access
    Réponses: 6
    Dernier message: 20/12/2006, 14h34
  5. L'équivalent de InputBox (de VBA) en PB ?
    Par Maman Kakalé Néhémiya dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 30/08/2006, 18h46

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