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 :

Copie de lignes sous condition


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut Copie de lignes sous condition
    Bonjour ou re-bonjour

    Je commence à étudier le VBA, mais j'ai besoin de 2-3 codes rapidement que je ne saurai écrire moi-même à l'heure actuelle.

    Sur cette macro, qui, si j'ai bien compris, devra se mettre dans un module de ma feuille excel, puis s'associer à un bouton que j'appellerai "facture", je cherche à :

    Copier les lignes dont les cellules de la colonne A ne sont pas vides (une valeur est inscrite) en limitant la copie aux colonnes A à E.
    La finalité serait d'avoir dans le presse papier les lignes en question pour pouvoir les coller sur un fichier Word.

    exemple : Tableau à 8 colonnes (A à H) et 200 lignes.
    Toutes les cellules de la colonne A sont vides sauf A12, A14, A18.
    Si je clique sur mon bouton, je veux avoir dans le presse papier
    A12,B12,C12,D12,E12
    A14,B14,C14,D14,E14
    A18,B18,C18,D18,E18

    En vous remerciant par avance.

  2. #2
    Membre actif
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Points : 205
    Points
    205
    Par défaut
    Bjr,

    Avec un filtre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveSheet.Range("$A$1:$E$200").AutoFilter Field:=1, Criteria1:="<>"
    Intersect(Range("A1").CurrentRegion, Range("A:D")).Select
    Selection.Copy

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Bonsoir steff,

    merci pour ta proposition, mais ce filtre supprime les lignes où A est vide, et ne s'arrête pas à la colonne E.
    On s'en approche mais ce n'est pas tout à fait ça.
    Cdt

  4. #4
    Membre actif
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Points : 205
    Points
    205
    Par défaut
    Re,

    Pour prendre les vides c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("$A$1:$H$200").AutoFilter Field:=1, Criteria1:="="
    Pour prendre les pas vides :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("$A$1:$H$200").AutoFilter Field:=1, Criteria1:="<>"

    et la suite est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Intersect(Range("A1").CurrentRegion, Range("A:E")).Select
    Selection.Copy

  5. #5
    Membre actif
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 269
    Points
    269
    Par défaut
    Bonjour,

    Citation Envoyé par zigwai Voir le message
    Bonsoir steff,

    merci pour ta proposition, mais ce filtre supprime les lignes où A est vide, et ne s'arrête pas à la colonne E.
    On s'en approche mais ce n'est pas tout à fait ça.
    Cdt
    Un filtre ne supprime rien, les lignes sont seulement masquées.
    Cdt

    Guiiand

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Ok merci pour les filtres, je ne savais en effet pas que cela "masquait".
    Ceci étant j'aurai préféré une simple copie des lignes voulues sans masquer le reste.
    Le cas échéant comment "démasque"-t-on ensuite les lignes masquées de cette manière ?

    D'autre part la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Intersect(Range("A1").CurrentRegion, Range("A:E")).Select
    n'a pas l'air de fonctionner, puisque j'ai toujours les colonnes après E (F,G,H...)

    Edit : Je n'avais pas vu la cellule avec menu déroulant qui apparait en haut à gauche, qui permet de rétablir les cellules masquées, donc pour ce point c'est bon. En revanche ça ne masque pas les colonnes après E

    Cette solution de filtre est une possibilité, simplement le bouton ne sert plus à grand chose, à part afficher le menu déroulant à la première utilisation.
    J'aurai préféré une sélection des lignes voulues en cliquant sur le bouton.
    Mais si vous n'avez pas ça en stock, c'est déjà très aimable de m'avoir fourni ce filtre

  7. #7
    Membre actif
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 269
    Points
    269
    Par défaut
    Re,

    Dans ta question, tu demandais d'avoir les colonnes A à E dont A est non vide dans le presse papier.

    C'est exactement ce que le code de Steff fais, tu n'as plus qu'a coller dans word.

    Si au contraire tu veux que les colonnes après E soit masquée sur Excel c'est un autre problème.

    Assure toi de poser la bonne question pour avoir la bonne réponse.

    Bonne journée
    Cdt

    Guiiand

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Lorsque j'associe le code à un bouton, et que j'active ce bouton:
    - Le filtre s'active, laissant apparaitre uniquement les lignes désirées, toutes colonnes confondues
    - Lorsque j'essaie de coller dans un fichier Word, le collage ne se fait pas. Il n'apparait que l'icône "options de collage", avec les différentes possibilités:
    Conserver la mise en forme source
    Respecter la mise en forme de destination
    ...
    Conserver la mise en forme source et le lien vers Excel

    J'en conclus que les lignes doivent bien se placer dans le presse papier mais le collage ne se fait pas.

    Mes questions sont donc:
    - Comment résoudre ce problème de collage, quelles en sont les origines ?
    - Comment éviter l'activation du filtre au déclenchement du bouton, pour n'obtenir que la copie des lignes ?

    Mes excuses si mes questions peuvent sembler mal formulées ou idiotes, je fais de mon mieux ^_^ et je sais que c'est réciproque et gratuit et je vous en remercie.

  9. #9
    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.

    Je viens de faire le test d'un Copier / Coller entre une sélection dans Excel après filtrage et Word, pas de souci.

    Est-ce que cela fonctionne en manuel de ton côté ?

    Dans l'affirmative, c'est le code qui ne va pas, sinon c'est un problème dans ta version …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Oui, si j'active le filtre, puis selectionne les lignes non masquées manuellement, puis CtrlC et CtrlV dans Word, ça fonctionne.
    Ce serait donc le code qui serait problématique ?

  11. #11
    Membre actif
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Points : 205
    Points
    205
    Par défaut
    Bjr,

    Le code :

    applique un filtre
    sélectionne la plage visible du filtre,
    cette plage est restreinte aux colonne A:E grace à Intersect
    Il fait une copie

    Et il marche !!

    il suffit de faire Ctrl V ds Word pour le vérifier.

    La suppression du filtre se fait par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("$A$1:$H$200").AutoFilter Field:=1
    Mais cela invalide la copie ... donc je ne l'ai pas mis dans le code initial
    Il faudrait, par code ouvrir ou créer un fichier Word, coller ds ce fichier puis retirer le filtre.

    cdlt

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Merci pour les explications Steff,

    La présence du filtre n'est pas très problématique, je peux jouer avec le menu déroulant pour le supprimer une fois ma copie faite au pire.
    Par contre le collage sur Word ne fonctionne vraiment pas, alors c'est peutêtre vraiment un problème de version pour moi, je vais regarder ça.
    Merci beaucoup en tous les cas.

    Cdt

  13. #13
    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

    Si cela fonctionne en manuel, il n'y a pas de raison …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

Discussions similaires

  1. [XL-2010] copier coller des lignes sous condition avec un changement de texte sur la ligne copiée.
    Par a.ouguerzam dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/11/2014, 16h48
  2. Suppression de lignes sous conditions
    Par juniorglobal08 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/10/2008, 21h15
  3. copier des lignes sous conditions (dans 2 colonnes différentes)
    Par olive08 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 12/10/2007, 14h44
  4. Afficher une ligne sous condition
    Par gids01 dans le forum iReport
    Réponses: 4
    Dernier message: 25/09/2007, 13h48
  5. Suppression des lignes sous condition multiple
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2007, 16h23

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