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

Excel Discussion :

Copier coller une ligne sous condition


Sujet :

Excel

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Copier coller une ligne sous condition
    Je souhaiterai crée un code sous VBA excel qui me permette de copier une ligne d'un fichier A vers un fichier B. Je donne plus de détail.

    No ligne Mois Entrée 1 Entrée 2 ........ EntréeN

    1 Janv-09
    2 Févr-09
    3 Mars-09
    4 Avr-09
    5 Mai-09
    6 Juin-09
    7 Juil-09
    8 Août-09

    Sur le fichier A je veux un code qui me permette de copier toute une ligne de la colonne des entrée de 1 à N en fonction du mois. C'est à dire si je choisi le mois de mars , il faut que ke puisse copier automatiquement toute la ligne 3 des entrées de 1 à N. et puis le coller dans le fichier XL B
    Est ce possible?

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour et bienvenue,
    C'est évidement possible, mais il reste une ou deux questions...
    1. Le fichier B, est-ce toujours le même, je veux dire, faut-il copier à la suite selon ton choix, ou la copie se fait à chaque fois sur un nouveau fichier vièrge.
    2. Les données à copier, est-ce que N à toujours la même valeur ?
    3. Pour le fun, pour indiquer le mois à copier, veux tu le faire sur la feuille de ton ficiher A ou avec une 'fenêtre'
    En fonction de ça on peut déterminer la manière de procéder.
    A+
    N'oubliez pas le si votre problème est solutionné.

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Quelques précisions....
    1. Le fichier B reste toujours le même. Donc la copie se fait sur le même fichier de destination.

    2. Les entrées 1, entrées 2, ...entrées N, représentent les colonnes qui ont des valeurs saisies pour chaque mois.
    3. Pour indicatif, Le mois reste à choisir dans la macro. Une fois que je choisi le mois de mars par exemple , il faudrais que je copie automatiquement les valeurs des colonnes ,entrées 1, entrées 2, ...entrées N suivant le numéro de ligne indiqué par le mois choisi dans le code..

    Merçi d'avance pour toute proposition.




    Citation Envoyé par Fvandermeulen Voir le message
    Bonjour et bienvenue,
    C'est évidement possible, mais il reste une ou deux questions...
    1. Le fichier B, est-ce toujours le même, je veux dire, faut-il copier à la suite selon ton choix, ou la copie se fait à chaque fois sur un nouveau fichier vièrge.
    2. Les données à copier, est-ce que N à toujours la même valeur ?
    3. Pour le fun, pour indiquer le mois à copier, veux tu le faire sur la feuille de ton ficiher A ou avec une 'fenêtre'
    En fonction de ça on peut déterminer la manière de procéder.
    A+

  4. #4
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,
    Voici une proposition:
    J'ai mis des explications sur les lignes du code, j'ai appelé les fichiers 'FichierA' et 'FichierB', je n'ai pas renommé les feuilles (! je suis en version GB).
    J'ai considéré que l'entrée du mois à copier se faisait sur la feuil1 du fichierA dans la cellule O1 (A adapter selon tes besoins)
    Autre point important, j'ai considéré que tu ouvrais le fichierB manuellement avant le lancement de la macro.
    Je me suis permis d'ajouter le fait que la macro passait en rouge les lignes copiées.
    Ce n'est certainement pas le code le plus 'efficace' mais il a le mérite, je pense, d'être compréhensible, le but étant que tu apprennes


    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
    Sub CopieDonnéesSelonMois()
    '
    Dim MyMonth As Integer
    Dim NbRows As Integer
    Dim NbCol As Integer
    Dim i As Integer
     
    MyMonth = Sheets("sheet1").Range("o1") 'prend la valeur renseignée dans la celulle o1 du fichierA
    NbRows = Application.Subtotal(3, Sheets("sheet1").Range("b:b")) 'compte le nombre de ligne
     
    For i = 2 To NbRows 'Boucle qui parcours les lignes de la colonne mois
     
        If Sheets("sheet1").Cells(i, 2) = MyMonth Then 'vérifie si le mois de la ligne=choix
            NbCol = Application.Subtotal(3, Sheets("sheet1").Range(i & ":" & i))
            Sheets("sheet1").Range(Cells(i, 3), Cells(i, NbCol)).Copy 'copie la ligne en question, uniquement de la colonne C à la dernière colonne remplie.
            Windows("FichierB.xls").Activate 'passe sur le fichierB
            Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 'Colle sur première ligne vide
            Windows("fichierA.xls").Activate 'repasse sur fichierA
            Rows(i).Font.ColorIndex = 3 'applique la couleur rouge sur la ligne copiée
        End If
    Next i
     
    End Sub
    Bonne continuation
    N'oubliez pas le si votre problème est solutionné.

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Deux questions
    Merçi pour le code. J'ai deux questions.

    1) Je compte remplacer le mois à considerer quand je voudrais . Si aujoud'hui je veux choisir par exemple Mars. Il peut se situé en o1 tout comme en o9, ou voire o 11. comment faire?

    2) Si je veux adapter ce code pour choisir une cellule qui apparait sur la même ligne que devrais remplacer? Je suppose nbcol.

    Merçi encore pour ton aide.


    Citation Envoyé par Fvandermeulen Voir le message
    Salut,
    Voici une proposition:
    J'ai mis des explications sur les lignes du code, j'ai appelé les fichiers 'FichierA' et 'FichierB', je n'ai pas renommé les feuilles (! je suis en version GB).
    J'ai considéré que l'entrée du mois à copier se faisait sur la feuil1 du fichierA dans la cellule O1 (A adapter selon tes besoins)
    Autre point important, j'ai considéré que tu ouvrais le fichierB manuellement avant le lancement de la macro.
    Je me suis permis d'ajouter le fait que la macro passait en rouge les lignes copiées.
    Ce n'est certainement pas le code le plus 'efficace' mais il a le mérite, je pense, d'être compréhensible, le but étant que tu apprennes


    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
    Sub CopieDonnéesSelonMois()
    '
    Dim MyMonth As Integer
    Dim NbRows As Integer
    Dim NbCol As Integer
    Dim i As Integer
     
    MyMonth = Sheets("sheet1").Range("o1") 'prend la valeur renseignée dans la celulle o1 du fichierA
    NbRows = Application.Subtotal(3, Sheets("sheet1").Range("b:b")) 'compte le nombre de ligne
     
    For i = 2 To NbRows 'Boucle qui parcours les lignes de la colonne mois
     
        If Sheets("sheet1").Cells(i, 2) = MyMonth Then 'vérifie si le mois de la ligne=choix
            NbCol = Application.Subtotal(3, Sheets("sheet1").Range(i & ":" & i))
            Sheets("sheet1").Range(Cells(i, 3), Cells(i, NbCol)).Copy 'copie la ligne en question, uniquement de la colonne C à la dernière colonne remplie.
            Windows("FichierB.xls").Activate 'passe sur le fichierB
            Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 'Colle sur première ligne vide
            Windows("fichierA.xls").Activate 'repasse sur fichierA
            Rows(i).Font.ColorIndex = 3 'applique la couleur rouge sur la ligne copiée
        End If
    Next i
     
    End Sub
    Bonne continuation

  6. #6
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Re,
    Désolé, je suppose que c'est le fait de la longue réunion que je viens d'avoir mais je te suis plus du tout...donc je récapitule:
    1° Le mois à copier est renseigné dans une celulle 'indépendante' des données de tes lignes, je te conseille de garder une celulle unique pour cette définition. tu réécris à chaque fois dessus.
    Si tu veux une autre celulle, adapte "o1" par la celulle choisie (elle peut-être sur une autre feuille)
    2°Ajouter une cellule sur la même ligne...tout dépent si c'est une celulle contiguë
    Quoi qu'il en soit NbCol compte le nombre de colonne remplie sur la ligne concernée à partir de la colonne C => Si rempli de C2 à F2 NbCol renvoi 4
    Si tu veux ajouter la colonne F il faut ajouter 1 à NbCol
    Si tu veux ajouter la colonne B il faut prendre l'autre élément qui constitue l'info. En fait, en utilisant Cell pour définir, tu dois indique dans l'ordre le numéro de ligne, ensuite le numéro de colonne, donc pour avoir la celulle B4 il faut noter Cells(4,2).

    J'espère avoir été clair...

    A+
    N'oubliez pas le si votre problème est solutionné.

  7. #7
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Suivi du code
    Peut etre je me suis mal expliquer. Tel que tu l'a défini c'est clair. je voudrais en retour definir dans mon code un mois précis pour qu'il copie une ligne entière ou une cellule de la meme ligne ou se trouve le mois choisi .
    Par exemple si je choisi "Mars" dans mon code je voudrais copier toute la ligne des données de la ligne 3 ou des cellules sur la meme ligne.
    Le mois prochain je voudrais remplacer "Mars" par "Avril" dans mon code. Ainsi je voudrais qu'il copie sans démarche supplémentaire les mêmes ligne choisies ou les mêmes cellules. Nous sommes partis sur le raisonnement des lignes , nous pouvons rester dans ce même raisonnement. L'objectif est de choisir le mois librement dans le code pour qu'il aille chercherles données automatiquement.

    merçi


    Citation Envoyé par Fvandermeulen Voir le message
    Re,
    Désolé, je suppose que c'est le fait de la longue réunion que je viens d'avoir mais je te suis plus du tout...donc je récapitule:
    1° Le mois à copier est renseigné dans une celulle 'indépendante' des données de tes lignes, je te conseille de garder une celulle unique pour cette définition. tu réécris à chaque fois dessus.
    Si tu veux une autre celulle, adapte "o1" par la celulle choisie (elle peut-être sur une autre feuille)
    2°Ajouter une cellule sur la même ligne...tout dépent si c'est une celulle contiguë
    Quoi qu'il en soit NbCol compte le nombre de colonne remplie sur la ligne concernée à partir de la colonne C => Si rempli de C2 à F2 NbCol renvoi 4
    Si tu veux ajouter la colonne F il faut ajouter 1 à NbCol
    Si tu veux ajouter la colonne B il faut prendre l'autre élément qui constitue l'info. En fait, en utilisant Cell pour définir, tu dois indique dans l'ordre le numéro de ligne, ensuite le numéro de colonne, donc pour avoir la celulle B4 il faut noter Cells(4,2).

    J'espère avoir été clair...

    A+

  8. #8
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,
    Désolé mais je suis un peu perdu...Le mois change dans le code, via la celulle O1. Si ce mois-ci tu indiques 4 dans cette celulle, le code copiera toutes les lignes de la colonne C à .. qui ont un 4 dans la colonne B.
    Si le mois suivant tu indiques 5 et que tu actives la macro, il copiera les lignes qui on un 5 dans la colonne B, et ça en dessous du précédent 'copié' dans le fichierB.
    Du coup, je pense que ça réponde à ton attente. Non ?
    Si tu veux, je peux te préparer un petit fichier exemple.
    A+
    N'oubliez pas le si votre problème est solutionné.

  9. #9
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Pièces jointes let détails.
    Voici le détail de la procédure à exécuter:

    Je mets plus en lumière le problème en prenant un autre exemple. J’ai mis deux pièces jointes comme demandé. ( Fichier A et Fichier B )

    Sur le fichier A, Je souhaiterais écrire une macro qui copie le code couleur 1 du fichier A dans l’une des cellules de la colonne C du fichier B. le facteur qui déterminera automatiquement la ligne correspondante ( C2, C3, C4, C5, ,,, C13) est le mois à choisir
    Dans le code du fichier A.
    Sur le fichier A, dans la macro à écrire, Je voudrais déclarer( mois par mois) le « mois » à considérer. Par exemple Mars ou Avril ou Décembre.
    Si je choisi Mars je voudrais coller automatiquement sur C4 (qui correspond à la case Nbre témoins). Ainsi de suite.
    L’objectif est de modifier le code mois par mois en choisissant le mois suivant pour coller automatiquement sur la case correspondante.



    Citation Envoyé par Fvandermeulen Voir le message
    Bonjour,
    Désolé mais je suis un peu perdu...Le mois change dans le code, via la celulle O1. Si ce mois-ci tu indiques 4 dans cette celulle, le code copiera toutes les lignes de la colonne C à .. qui ont un 4 dans la colonne B.
    Si le mois suivant tu indiques 5 et que tu actives la macro, il copiera les lignes qui on un 5 dans la colonne B, et ça en dessous du précédent 'copié' dans le fichierB.
    Du coup, je pense que ça réponde à ton attente. Non ?
    Si tu veux, je peux te préparer un petit fichier exemple.
    A+
    Fichiers attachés Fichiers attachés

  10. #10
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Je comprends vite mais il faut m'expliquer longtemps...
    Donc j'ai maintenant saisi l'aspect destination (donc sur le fichierB) maintenat reste à savoir ce que tu veux copier depuis le A.
    Quelle(s) ligne(s) et/ou celulle(s) veux tu copier?
    Je ne retrouve pas de légende dans ton fichier A donc j'ai du mal à saisir...
    N'oubliez pas le si votre problème est solutionné.

  11. #11
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Cellules à copier
    Je veux juste copier le code couleur 1 du fichier A ( après j'adapterais) Mais encore je veux le coller sur les celulles des colonnes C et D du fichier B en fonction du mois. Et avoir la ligne automatiquement comme je l'ai décrit.

    A+

    Citation Envoyé par Fvandermeulen Voir le message
    Je comprends vite mais il faut m'expliquer longtemps...
    Donc j'ai maintenant saisi l'aspect destination (donc sur le fichierB) maintenat reste à savoir ce que tu veux copier depuis le A.
    Quelle(s) ligne(s) et/ou celulle(s) veux tu copier?
    Je ne retrouve pas de légende dans ton fichier A donc j'ai du mal à saisir...

  12. #12
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,
    J'ai travaillé selon ton format, ce que j'ai prévu:
    Copie du contenu de la celulle B2 du fichierA en Bx du fichierB et de la celulle B3 du fichierA en Cx du fichierB (x selon le mois indiqué sur fichierA).
    Ca te permettra d'adapter selon ce que tu veux, tu verras que ce sont les varibles MyData1 et MyData2.
    J'ai mis la macro sur le fichier A mais tu peux, si tu préfère le mettre sur le B.
    Bonne continuation,
    N'oubliez pas le si votre problème est solutionné.

  13. #13
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Ca marche.
    Super!! en 6 lignes. Je serais content si tu peux me faire suivre des exemples qui puissent me faire évoluer progréssivement. Je t'ai fait suivre mon mail. Merçi encore.



    Citation Envoyé par Fvandermeulen Voir le message
    Bonjour,
    J'ai travaillé selon ton format, ce que j'ai prévu:
    Copie du contenu de la celulle B2 du fichierA en Bx du fichierB et de la celulle B3 du fichierA en Cx du fichierB (x selon le mois indiqué sur fichierA).
    Ca te permettra d'adapter selon ce que tu veux, tu verras que ce sont les varibles MyData1 et MyData2.
    J'ai mis la macro sur le fichier A mais tu peux, si tu préfère le mettre sur le B.
    Bonne continuation,

Discussions similaires

  1. [XL-2013] Copier coller supprimer ligne sous condition
    Par nubed dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/04/2015, 11h09
  2. [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
  3. Réponses: 15
    Dernier message: 26/04/2014, 17h00
  4. [XL-2007] Copier coller une ligne excel sur autre feuille avec conditions
    Par amstelveen dans le forum Excel
    Réponses: 5
    Dernier message: 11/05/2009, 18h54
  5. Copier Coller une ligne d'une table avec modif ?
    Par nolan76 dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/03/2004, 16h34

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