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 :

Sélectionner une plage de données dans une colonne suivant une valeur dans une autre colonne [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien d'exploitation
    Inscrit en
    Mars 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Sélectionner une plage de données dans une colonne suivant une valeur dans une autre colonne
    Bonjour,

    Je suis novice en macro et j'aurais besoin de votre aide sur ce sujet :

    Je cherche à sélectionner (copier) une plage de données dans une colonne (A) en fonction d’une valeur dans une autre colonne (C). Si la valeur de la colonne C est égale à 11 (ou C=12), je voudrais sélectionner les valeurs de la colonne A correspondantes, sachant que le nombre de ligne peu être variable et ne commence pas forcément à la première cellule (A1). Il se peut qu'il y ait des cellules vides dans la colonne A. Je voudrais copier cette plage selectionnée pour la mettre dans une autre feuille.

    Exemple :
    Nom : Sans titre.jpg
Affichages : 3368
Taille : 89,4 Ko
    Merci par avance.

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Bonjour à toi,

    Si j'ai bien compris ta demande, un simple filtre suffit.
    Tu filtre la colonne C sur 11 et 12, tu filtre ensuite la colonne A sur non vide.

    Puis tu sélectionne la plage sur la colonne A et tu copie avec le paramètre xlCellTypeVisible

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 664
    Points : 5 798
    Points
    5 798
    Par défaut
    Bonjour,

    Il y a un excellent tuto sur les filtres avancés avancés, disponible sur ce site. http://philippetulliez.developpez.co...dvancedfilter/
    Je pense que tu y trouveras bonheur.

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien d'exploitation
    Inscrit en
    Mars 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses, oui effectivement c'est un simple filtre.

    Mais j'aimerais le faire sur une petite macro car j'ai plusieurs manipulations à effectuer du même genre.
    J'avais commencé à écrire ceci, mais cela bloque au niveau de la selection de la plage A:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sheets("report_report").Select
    Dim cellule As Range
    For Each cellule In Range("C:C")
        If cellule.Value = "11" Then
            Range("A58", Range("A58").End(xlDown)).Select
        End If
    Next cellule

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien d'exploitation
    Inscrit en
    Mars 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    J'ai reussi à faire ceci avec l'enregistreur de macro et ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ' copie de la vitesse de vent :
        Sheets("report_report").Select
        Columns("C:C").Select
        Selection.AutoFilter
        ActiveSheet.Range("$C$1:$C$71479").AutoFilter Field:=1, Criteria1:="11"
        Dim b As Long
        b = Range("L5500").End(xlDown).Row
        Range("L2" & ":" & "L" & b).Select
     
        Selection.Copy
        Sheets("Données").Select
        Range("B3").Select
        ActiveSheet.Paste
    Cela peu être simplifié peut être .....

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Bonjour !

    Citation Envoyé par cerede2000 Voir le message
    Si j'ai bien compris ta demande, un simple filtre suffit.
    Tu filtre la colonne C sur 11 et 12, tu filtre ensuite la colonne A sur non vide.
    Puis tu sélectionne la plage sur la colonne A et tu copie avec le paramètre xlCellTypeVisible
    Ok pour le filtre mais pas pour xlCellTypeVisible car superflu :
    les méthodes Copy comme Delete travaillant déjà uniquement avec les cellules visibles …

    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

  7. #7
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ah ! Merci
    Tellement l'habitude d'utiliser le pasteSpecial avec ce paramètre que je n'ai jamais fais attention à ce détails

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

Discussions similaires

  1. Valeur d'une plage de données
    Par nicolav dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/08/2009, 18h32
  2. Réponses: 4
    Dernier message: 27/03/2008, 23h01
  3. Réponses: 2
    Dernier message: 03/01/2008, 16h15
  4. Réponses: 2
    Dernier message: 31/08/2007, 11h33
  5. [VBA-E] tester la valeur d'une plage de données sans boucle
    Par bibi5883 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/04/2007, 08h36

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