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 et coller une ligne selon la quantité indiquée dans une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'assistance
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'assistance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Points : 0
    Points
    0
    Par défaut copier et coller une ligne selon la quantité indiquée dans une cellule
    Bonjour à tous,

    Nouveau dans ce forum et ne connaissant rien en VBA j'ai besoin de votre aide pour mon petit tableau.

    Je travaille avec Excel 2010 et je créé un petit tableau pour gérer mes congélateurs.

    dans cette macro, je copie une ligne et la colle en dernier dans la page suivante. Ça marche bien, mais je voudrai que la ligne soit coller le nombre de fois (variable entre 1 et plus) indiqué en cellule E6 et la je cale. J'ai recherché mais ne trouve que des solutions si cellule oui/non ou bien si différent, etc. mais pas mon besoin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     EntréProduits Macro
        Range("B6:F6").Select
        Selection.Copy
        Sheets("Congele").Select
        Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Menu").Select
        Range("C6:F6").Select
        Application.CutCopyMode = False
        Selection.ClearContents
        Range("C6:D6").Select
    End Sub
    Alors merci de votre aide et j'aurai certainement d'autres besoins par la suite, mais comme disait l'autre: "chi va piano va sano" alors je règle ce problème et cherche les quatre solutions pour le moment.

    Merci à tous et bonne journée.

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une piste :
    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
     
    Sub Test()
     
        Dim NBFois As Integer
        Dim I As Integer
     
        NBFois = 10 'ici, récupérer la valeur de la cellule !
     
        With Sheets("Congele")
     
            For I = 1 To NBFois
                .Cells(.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Resize(1, Range("B6:F6").Columns.Count).Value = Range("B6:F6").Value
            Next I
     
        End With
     
        Sheets("Menu").Range("C6:F6").ClearContents
     
    End Sub

  3. #3
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    (correctif)

    Theze. Désolé pour ce télescopage.


    Bonjour et bienvenu sur ce forum,

    Tout d'abord, retourne tout code en utilisant les balises # adéquates.

    Ensuite, ôte tous ces Select qui ne font qu'alourdir ta procédure.

    Une boucle For en utilisant comme entier d'arrivée la valeur de la cellule devrait convenir.
    A titre d'information et/ou de formation, cet espace sur les boucles.

    Enfin, ci-joint un ensemble d'espaces documentaires qui pourraient t'être utiles.
    Fichiers attachés Fichiers attachés

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  4. #4
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Hello Marcel

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'assistance
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'assistance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Bonjour,

    Merci Thesé et MarcelG pour votre réponse, mais malheureusement je n'arrive pas à l'appliquer.

    Sur la ligne: NBFois = tu m'indique de récupérer la valeur de la cellule E6, j'ai essayer ça: NBFois = Cells(6, 5), ca ne marche pas j'ai cherche comment récupérer cette valeur mais rien.

    J'ai essayer avec juste une quantité NBFois = 5, ça marche pas, la formule copie bien la ligne et la colle, mais une seul fois.

    Marcel, le lien pour l'espace documentaire ne marche pas, une seul page sur Word mais les liens ne sont pas actifs.

    Merci pour votre soutient

  6. #6
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour Marsu, Bonjour au Forum,

    Une règle d'or, en VBA, est d'attacher chaque objet à l'objet parent.
    Ecrire Cells(6,5) consiste à définir la cellule à la feuille active.
    De plus, même si elle est tacite, mieux vaut préciser la propriété valeur.

    Donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("lawks").Cells(6,5).Value
    Pour un contrôle, tu peux afficher dans la fenêtre Exécution (ctrl + G) cette ligne de code précédée d'un "?" puis actionner la touche Enter.

    Nota: on peut ici utiliser l'objet Range; mieux, une cellule nommée.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'assistance
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'assistance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Re MarcelG,

    Ça marche tjr pas. Lorsque je fais un contrôle ça me dit: "erreur d'exécution".

    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
    Sub Test()
     
        Dim NBFois As Integer
        Dim I As Integer
     
            NBFois = Worksheets("lawks").Cells(6, 5).Value
     
        With Sheets("Congele")
     
            For I = 1 To NBFois
                .Cells(.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Resize(1, Range("B6:F6").Columns.Count).Value = Range("B6:F6").Value
            Next I
     
        End With
     
        Sheets("Menu").Range("C6:F6").ClearContents
     
    End Sub
    Désoler mais je suis vraiment une brelle , habituellement je fais les macro à base de l'enregistreur donc trés limité

    Merci

  8. #8
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Désoler mais je suis vraiment une brelle
    Rassure-toi, nous l'avons tous été.
    Moi le premier, au regard de la technicité de certains, nous sommes, pour beaucoup, la brelle d'un plus haut que soi (mercatog, oussker'nor ....)

    habituellement je fais les macro à base de l'enregistreur donc trés limité
    L'enregistreur ne peut que fournir une aide.
    Ensuite, on se doit absolument de l'épurer.
    Regarde par exemple le retour de l'enregistreur lors d'une mise en page.
    Certes, pour l'épurer, on se doit de maîtriser quelques bases.

    ça me dit: "erreur d'exécution".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NBFois = Worksheets("lawks").Cells(6, 5).Value
    Naturellement!
    Il ne faut pas te contenter de copier/coller un code qui t'est fourni pour information, donc, bien des fois, à travers un exemple.
    Tu dois ensuite l'adapter. Et c'est, d'ailleurs, cette adaptation qui est formatrice.
    Celle-ci consistant à constater puis modifier, en connaissance de cause, les méthodes et propriétés qui y sont mentionnées.

    Ton classeur contient-il une feuille de travail nommé "lawks"?

    Un conseil enfin.
    Ne pas coder "au kilomètre, mais structurer son code.
    Ici, on peut définir, par exemple, la dernière ligne informée dans une 1ère ligne de code en utilisant une variable annexe.
    Cette variable servirait ensuite d'argument dans une méthode

    Ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Resize(1, Range("B6:F6").Columns.Count).Value = Range("B6:F6").Value
    laisse interrogatif.
    L'objet Range au regard de l'égalité n'est pas rattaché.
    Essaie d'effectuer un contrôle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Debug.Print .Cells(.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Resize(1, Range("B6:F6").Columns.Count).Address
    Debug.Print Range("B6:F6").Value
    en ayant au préalable ouvert la fenêtre Exécution de l'éditeur VBE (CTRL + G)

    A plus tard.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'assistance
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'assistance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Re

    J'avais bien vue que le nom été différent, j'avais fais l'essais en corrigeant par le vrai non de la feuille, mais c'est tjr pareil, l'ensemble marche mais ne colle qu'une seul fois la ligne et ca quelque soit le nombre indiqué en E6.

    Pour rappel ce que je souhaite faire c'est coller la ligne le nombre de fois indiqué en E6.

    Cordialement

    Arnaud

  10. #10
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Au préalable.
    Si tu effectues un essai avec un nom de feuille différent, autant le mentionner dans le code que tu retournes. Non?
    Cette précaution peut être utile à tes interlocuteurs.

    l'ensemble marche mais ne colle qu'une seul fois la ligne et ca quelque soit le nombre indiqué en E6.
    Naturellement!
    Tu n'as pas appliqué toutes mes indications. Apparemment, tu n'as fait aucun contrôle
    Tu utilises une boucle For sur un index "i" sans l'utiliser dans le code inclus!

    Donc:
    Découpe ta ligne de code (voir mon post précédent)
    Intègre(s)-y ta variable i.
    Après avoir intégré les contrôles que je t'ai mentionnés dans le code, procède à son exécution en pas à pas.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'assistance
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'assistance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Bonjour le forum et Marcel,

    Merci pour le temps passé, rien ne marche malgré mes diverses tentatives et comme pour moi c'est du chinois ou du mandarin, voir du martien, je laisse tombé pour le moment et trouvé une autre solutions pour m'aider.

    Encore une fois désoler pour le dérangement et merci pour le temps que tu m'a consacré.

    Cordialement

    Arnaud

  12. #12
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour à toi, Bonjour au Forum,

    Franchement, je ne comprends pas cette attitude.
    On fonce tête baissée vers un développement sans chercher à comprendre ce qui y est mentionné, sans même tenter de suivre les indications quant aux actions à mener.
    Je l'ai toujours écrit, mais c'est mon seul avis, c'est la recherche qui fait progresser (tout comme en mathématiques ou en physiques). Et ce même si elle conduit à l'échec.

    Pour ceux qui lisent ce post, à toute fin d'information, j'ai reporté dans cette discussion un ensemble de liens.
    permettant d'aborder VBA.

    Car il convient d'aborder les connaissances de bases avant tout développement.
    Dans le cas de figure contraire, un jeune conducteur souhaiterait égaler Mickael Shumacher avant de passer son permis de conduire.

    Voilà.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'assistance
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'assistance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Bonsoir Marcel,

    Je te trouve quand même gonflé, (c'est pourquoi je répond à ton post) premièrement depuis le début j'ai bien indiqué que je ne connaisse rien en vba, et d'autre part je n'ai nullement l'intention de devenir un pilote de formule un. Si tel avait été le cas j'aurais commencer par suivre une formation !!!

    Un peut d'altruisme te d'empathie, te serais certainement profitable !!!

    Tu me fais pensé à ces profs qui sont tellement imbu de leurs personnes et de leurs méthodes qu'ils en oublies de regarder un peut vers le bas, la ou se trouve le commun des mortels.

    Je ne travaille ni dans la programmation ni dans les mats, d'ou mon inculture dans le domaine, moi mon boulot c'est de te rapatrier lorsque tu sera à l'autre bout du monde malade ou accidenté. J’espère qu'a ce moment la (que je ne te souhaite pas) on ne te demanderas pas de cherche la solutions toi même .

    Encore une fois, merci pour le temps que je t'ai fait perdre, et pas d'inquiétude je trouverai qlq plus compréhensible pour réglé mon tous petit problème,( juste histoire de faire le tour du paté de maison et non pas Monza).

    By by

  14. #14
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Je ne peux que répondre en gardant mon calme.
    N'ayant pas l'intention de polémiquer, ce sera mon dernier post.

    A mon humble avis, tu te trompes sur l'objet de ce forum.
    Il s'agit d'aider, pas d'assister.

    Citation Envoyé par Marsu799 Voir le message
    Si tel avait été le cas j'aurais commencer par suivre une formation !!!
    C'est là que le bât blesse.
    Afin qu'il y ait un minimum de compréhension entre le demandeur et ses interlocuteurs, un minimum de bases doit être acquis.
    Ensuite, sur cette base, la fréquentation du forum et un minimum d'investissement, que l'on est en droit d'attendre en retour, permettra une progression.

    Ma formation scientifique, si modeste soit-elle, me permet de prendre cette image en ce qui concerne la progression par la recherche, voire l'échec. Et ce n'est pas faire preuve de suffisance que d'inviter les demandeurs à progresser selon notre conception, certes, mais aussi notre témoignage et notre expérience. En suivant le fil du forum, tu pourras vérifier, j'en suis sûr, la véracité de mon propos.

    Voilà.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  15. #15
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir,

    Je ne travaille ni dans la programmation ni dans les mats, d'ou mon inculture dans le domaine, moi mon boulot c'est de te rapatrier lorsque tu sera à l'autre bout du monde malade ou accidenté. J’espère qu'a ce moment la (que je ne te souhaite pas) on ne te demanderas pas de cherche la solutions toi même .
    Tiens, ça me rappelle quelqu'un, ha oui c'est ça, Coluche dans Banzaï c'est bon, c'est bon, je pars car ça devient chaud patate ici

  16. #16
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour quand même

    Citation Envoyé par Marsu799 Voir le message
    Bonsoir Marcel,

    moi mon boulot c'est de te rapatrier lorsque tu sera à l'autre bout du monde malade ou accidenté. J’espère qu'a ce moment la (que je ne te souhaite pas) on ne te demanderas pas de cherche la solutions toi même .



    By by
    C'est Bye Bye qu'il faut écrire. By : c'est par, Bye c'est au revoir. Tu est peut-être mieux de suivre des cours d'anglais avant d'expédier ton client à St-Nazaire-de-Berry au lieu de Paris.

    Toi, tu est payé pour faire ton boulot. Tous ceux qui répondent ici sont des bénévoles. Et tout qu'ils te donnent, ils ne le donnent pas à d'autres
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

Discussions similaires

  1. [XL-2013] Copier et coller des lignes d'une pages vers la première ligne vide d'un autre fichier
    Par tommy.bezeau dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/06/2018, 10h39
  2. [XL-2013] Copier-Coller des lignes selon une condition
    Par psg7835 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 03/07/2017, 14h51
  3. [XL-2007] copier coller une cellule sur une ligne en fonction d'une valeur
    Par armina1978 dans le forum Excel
    Réponses: 3
    Dernier message: 17/11/2014, 09h43
  4. Réponses: 6
    Dernier message: 24/05/2012, 11h53
  5. [VBA-E] Copier et coller une ligne entiere
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 30/05/2006, 15h51

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