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 :

Copier cellule en fonction d'un critere


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut Copier cellule en fonction d'un critere
    Bonsoir à tous,

    Je dispose dans une feuille excel d'une liste utilisateur (col A) et d'une société (Col B), il y des lignes qui se repete

    Ci-joint le document.

    Et je voudrais par exemple sur une autre feuille extraire de la première feuille (BDD) tout les utilisateurs qui sont de la société Microsoft (Cellule E2) et que leur nom apparaisse une seule fois.

    Est-ce réalisable ?

    Merci d'avance pour votre aide et vos explications

    guigui69
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Tu peux aussi faire cela sans VBA en utilisant la formule matricielle ci dessous

    A mettre en A3 et a valider par CTRL + MAJ + ENTREE, puis descendre la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(BDD!$A$1:$A$16;PETITE.VALEUR(SI((BDD!$B$1:$B$16=$E$2)*1=1;LIGNE(BDD!$A$1:$A$16)-MIN(LIGNE(BDD!$A$1:$A$16))+1);LIGNES(BDD!$A$1:A1)))
    Cette formule ne gère pas l'erreur si plus rien a retourner, alors il te faudra gérer cette erreur comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTERREUR(INDEX(BDD!$A$1:$A$16;PETITE.VALEUR(SI((BDD!$B$1:$B$16=$E$2)*1=1;LIGNE(BDD!$A$1:$A$16)-MIN(LIGNE(BDD!$A$1:$A$16))+1);LIGNES(BDD!$A$1:A1))));"";INDEX(BDD!$A$1:$A$16;PETITE.VALEUR(SI((BDD!$B$1:$B$16=$E$2)*1=1;LIGNE(BDD!$A$1:$A$16)-MIN(LIGNE(BDD!$A$1:$A$16))+1);LIGNES(BDD!$A$1:A1))))

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Merci pour ta réponse,

    peux-tu m'expliquer ta formule je comprend pas INDEX LIGNE et est-il possible de limiter à l’apparition à une fois du prenom.

    Dans ton exemple cela répété le prénom de "Jean" et je voudrais que celui-ci s'inscrive juste une fois. Est-ce possible ?

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Difficile de t'expliquer le fonctionnement de cette formule (j'avoue que je ne la maîtrise pas encore très bien)

    Pour sortir une liste sans doublons, je ne vois que le code

    Exemple en utilisant un dictionaire
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub LanceFiltre()
     
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")
    Dim i As Integer
     
    Dim sh As Worksheet
    Dim shCible As Worksheet
     
    Set sh = Sheets("BDD")
    Set shCible = Sheets("Microsoft")
     
    shCible.Range("A:A").ClearContents
     
    'Ajoute les données
    For i = 1 To sh.Range("A" & Rows.Count).End(xlUp).Row
        If UCase(sh.Range("B" & i).Value) = UCase(shCible.Range("E2").Value) Then
            If Not dic.Exists(sh.Range("A" & i).Value) Then
                dic.Add sh.Range("A" & i).Value, sh.Range("A" & i).Value
            End If
        End If
    Next i
     
    'Copie le dictionnaire sur la feuille
    shCible.Range("A1").Resize(dic.Count, 1) = Application.WorksheetFunction.Transpose(dic.Keys)
     
     
    End Sub

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Merci pour ta réponse,

    Comment je pourrais adapté ton code dans le cas ou j'ai plusieurs feuille, comme dans l'exemple je voudrais rajouter la feuille google et faire meme type extraction.

    Merci d'avance pour vos explications

    guigui69

Discussions similaires

  1. [XL-2007] Macro Excel copier cellule en fonction de cellule indentique dans une colonne
    Par stephane12 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/03/2014, 06h51
  2. [XL-2007] Copier cellule en fonction du jour
    Par vins86 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/04/2013, 06h59
  3. [XL-2007] Copier cellule avec fonction si feuille existe
    Par youlig dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/03/2013, 16h52
  4. Copier cellule en fonction d'une variable
    Par Zertozerto dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 10/03/2011, 17h55
  5. Pb pour copier cellules avec fonctions
    Par chisutufu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/09/2009, 11h40

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