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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Chargé d'assistance
    Inscrit en
    Octobre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'assistance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 9
    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 confirmé
    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
    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 confirmé
    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 : 68
    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
    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

  4. #4
    Expert confirmé
    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
    Par défaut
    Hello Marcel

  5. #5
    Membre régulier
    Homme Profil pro
    Chargé d'assistance
    Inscrit en
    Octobre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'assistance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 9
    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 confirmé
    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 : 68
    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
    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.

  7. #7
    Membre régulier
    Homme Profil pro
    Chargé d'assistance
    Inscrit en
    Octobre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'assistance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 9
    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

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