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 :

macro copie ligne suivante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Par défaut macro copie ligne suivante
    Bonjour,
    Dans le cadre de mon stage je dois réaliser un tableau excel regroupant les participation salariale. Je dispose d'un tableau récapitulatif type avec formule afin de calculer les intérêts (onglet "part_salarié"). Dans un autre onglet appelé "recap" se trouve les salaires nets de chaque employé, En A3 se trouve le nom et de B3 à F3 les salaires de chaque année; la même chose pour 127 clients.
    J'ai créé une macro (bouton "suivant") sur l'onglet "part_salarié" qui me copie la première plage de donnée de l'onglet "recap" sur l'onglet "part_salarié". J'arrive a recopé le nom du premier client ainsi que ses salaires mais je n'arrive pas à faire en sorte qu'à chaque fois que je clic sur mon bouton "suivant" la macro me copie le nom et les salaires du client suivant.
    Pour plus de compréhension je vous donne le code que j'ai fait :

    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
    Dim Val As Integer
    Sub suivant()
     
    ' copie plage de donnée
     
        Sheets("recap").Select
        Range("B3:F3").Select
        Selection.Copy
        Sheets("part_salarié").Select
        Range("B12").Select
        ActiveSheet.Paste
     
    ' copie nom et prénom
     
        Sheets("recap").Select
        Range("A3").Select
        Selection.Copy
        Sheets("part_salarié").Select
        Range("A6").Select
        ActiveSheet.Paste
     
    End Sub
    Je précise que les noms pour chaque client copié doivent remplacer la cellule A3 de l'onglet "part_salarié" (mon tableau récapitulatif par client). Les salaires pour chaque client copié doivent remplacer les cellules B3:F3 de l'onglet "part_salarié"

    Un grand merci d'avance pour votre aide.

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour le forum, John Parker,
    Je précise que les noms pour chaque client copié doivent remplacer la cellule A3 de l'onglet "part_salarié" (mon tableau récapitulatif par client). Les salaires pour chaque client copié doivent remplacer les cellules B3:F3 de l'onglet "part_salarié"
    C'est à dire que chaque fois que tu cliques sur le bouton suivant dans la feuille "part salarié", les cellules "A3:F3" sont remplacées par les cellules suivantes de la feuille "RECAP" ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Par défaut
    Non, les cellules "A3:F3" de mon onglet recap sont recopiées en "B12:F12" de mon onglet "part_salarié", soit dans mon tableau récapitulatif des participations salariés.
    Merci pour ta réponse

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Non, les cellules "A3:F3" de mon onglet recap sont recopiées en "B12:F12"
    Excuses-moi mais je reprends :
    les cellules "A3:F3" de mon onglet recap sont recopiées en "A12:F12" et
    la suite
    les cellules "A4:F4" de mon onglet recap sont recopiées en "A13:F13"
    et ainsi de suite

    C'est ça ? parce que, sinon je suis largué
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Par défaut
    les cellules "A3:F3" de mon onglet recap sont recopiées en "A12:F12" de l'onglet "part_salarié" et
    la suite.
    les cellules "A4:F4" de mon onglet recap sont recopiées en "A12:F12" de l'onglet "part_salarié"
    et ainsi de suite
    Tu comprends?

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    tu as écrit

    les cellules "A3:F3" de mon onglet recap sont recopiées en "A12:F12" de l'onglet "part_salarié" et
    la suite.
    les cellules "A4:F4" de mon onglet recap sont recopiées en "A12:F12" de l'onglet "part_salarié"
    et ainsi de suite

    il me semble que c'est ce que j'avais dit

    C'est à dire que chaque fois que tu cliques sur le bouton suivant dans la feuille "part salarié", les cellules "A3:F3" sont remplacées par les cellules suivantes de la feuille "RECAP" ?
    donc dans la feuille "part_salarié", tu copies ce code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()'si c'est le nom de ton bouton
    suivant
    End Sub
     
    Private Sub Worksheet_Activate()'quand tu actives la feuille x =3
    x = 3
    End Sub

    et dans un module



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
     
    Public x As Long
    Sub suivant()
    Dim derlg As Long
    If x < 3 Then x = 3
    With Sheets("recap")
       derlg = .Range("A" & .Rows.Count).End(xlUp).Row
       Sheets("part_salarié").Range("A12:F12") = .Range("A" & x, "F" & x).Value
       x = x + 1
       If x > derlg Then MsgBox "fin de la liste": Exit Sub
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    excuses-moi

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim derlg As Long, plage As Range, cel As Range
    If Target.Address = "$J$6" Then
       With Sheets("recap")
          derlg = .Range("A" & .Rows.Count).End(xlUp).Row
          Set plage = .Range("a3:a" & derlg)
          Set cel = plage.Find(Target.Value)
          If Not cel Is Nothing Then
             Sheets("part_salarié").Range("A6:f6") = .Range("b" & cel.Row, "f" & cel.Row).Value
          Else
             MsgBox "pas de correspondance"
          End If
       End With
    End If
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Par défaut
    Ce code je le met bien dans ma feuille 1 "part_salarié"? Parce que ça ne fonctionne pas... Quand je choisis un nom de salarié rien en change...

  9. #9
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Je ne fais que des conn... car c'était dans l'évènement change, je suis partout à la fois

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim derlg As Long, plage As Range, cel As Range
    If Target.Address = "$J$6" Then
       With Sheets("recap")
          derlg = .Range("A" & .Rows.Count).End(xlUp).Row
          Set plage = .Range("a3:a" & derlg)
          Set cel = plage.Find(Target.Value)
          If Not cel Is Nothing Then
             Sheets("part_salarié").Range("A6:f6") = .Range("b" & cel.Row, "f" & cel.Row).Value
          Else
             MsgBox "pas de correspondance"
          End If
       End With
    End If
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Membre éclairé
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Par défaut
    Salut,
    J'espère que tu as passé un bon week end.
    J'ai rentré ton code avec quelques adaptations et il ne marche qu'à moitié... Bizarrement il fonctionne pour certains salariés mais pas pour d'autres en affichant pas les bons salaires. J'ai rajouté une ligne afin que les noms des salariés se trouvent en "A6". Je te montre ce que cela donne.

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim derlg As Long, plage As Range, cel As Range
    If Target.Address = "$J$5" Then
       With Sheets("recap")
          derlg = .Range("A" & .Rows.Count).End(xlUp).Row
          Set plage = .Range("a3:a" & derlg)
          Set cel = plage.Find(Target.Value)
          If Not cel Is Nothing Then
             Sheets("part_salarié").Range("B12:F12") = .Range("b" & cel.Row, "f" & cel.Row).Value
             Sheets("part_salarié").Range("A6") = .Range("a" & cel.Row).Value
          Else
             MsgBox "pas de correspondance"
          End If
       End With
    End If
     
    End Sub
    Encore et toujours merci!

  11. #11
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour le forum, John,

    Merci, j'ai passé un Weed-end ensoleillé et j'espère que toi aussi, si tu as encore des problèmes, peux-tu envoyer ton fichier ou un fichier bidon (avec des faux noms) afin que j'y regarde de plus près.
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

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

Discussions similaires

  1. [XL-2010] [VBA Userform] optimisation macro copie lignes sous critères
    Par Kannam dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/02/2015, 13h59
  2. [XL-2007] Macro - Copie ligne avec formule et récupération de nom de feuille
    Par klemanet dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/06/2012, 17h04
  3. [XL-2007] macro insertion ligne suivant ordre alphabétique
    Par creunch dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/02/2011, 16h12
  4. [XL-2007] Copie Ligne suivant conditions (suite)
    Par alpilon dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 27/11/2009, 10h29
  5. Macro création de ligne suivant colonne
    Par mik388 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/05/2008, 20h06

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