Aide pour copier-coller une ligne

  • Initiateur de la discussion Initiateur de la discussion franckylecake
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

franckylecake

Guest
Bonjour à tous,

Je suis un débutant un excel et j’ai besoin de votre aide afin d’automatiser mon travail. Je reçois des fichiers paie actualisés tout les mois (10 pour 10 employés) que je dois synthétiser mois par mois dans un autre tableau. J’ai essayé de créer une fonction qui fasse les copier-coller à ma place mais je n’ai réussi qu’à faire une fonction qui copie cellule par cellule. Je voulais savoir s’il était possible de faire une fonction qui copie une ligne (31 colonnes) d’un fichier dans mon tableau principal.

J’ai créé une mini fonction qui va chercher dans la première colonne le mois choisit afin d’y insérer la fonction de copie de ligne.

Merci d'avance pour votre aide


Sub Selection(Mois)

Dim C As Byte
Dim L As Byte
Dim Mois As Long

C = 1 'Pour obtenir la cellule A1
L = 1 'Pour obtenir la cellule A1
Do While (Comptes.cell(C, L) <> Mois)
L = L + 1
Loop

'Insertion de la fonction pour copier une ligne
'à partir de la cellule dans laquelle la fonction
'est exécutée


End Sub
 
Re : Aide pour copier-coller une ligne

Bonsoir,

Si personne ne te répondait, voici une macro que m'a modifiée Robert de ce forum, et qui permet :

- par double click dans une cellule de la colonne B
- d'insérer un nombre de lignes (avec format, validation)... d'un maximum de 20
- selon un modèle masqué en dessous du tableau
- avec un message box qui demande combien
- juste au dessous de la cellule cliquée

Ce qui est un super gain de temps. On insère donc selon le besoin autant de lignes qu'on veut (par 20 maxi) avec le format qu'on souhaite.

La macro :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 2 Then Exit Sub
Dim nbligne As Long
Dim t As String
Dim derligne As Integer

Application.ScreenUpdating = False
nbligne = Application.InputBox("Nombre de lignes à insérer (maximum 20)", "Insertion ligne", 20, , , , , 1)

Select Case nbligne
    Case Is > 20: t = "Maximum 20, SVP"
    Case 0: Exit Sub
    Case Is < 1: t = "Supérieur à 0, SVP"
End Select
If t <> "" Then
    t = t & vbNewLine & vbNewLine & "Procédure arrêtée."
    MsgBox t, , "Attention..."
    Exit Sub
End If
derligne = Target.Row + 1
If derligne = 4 Then derligne = 5
Rows(derligne & ":" & derligne + nbligne - 1).Insert
Range("modele").Copy Destination:=Range("a" & derligne & ":a" & derligne + nbligne - 1)
Range("f" & derligne & ":f" & derligne + nbligne - 1).ClearContents
        
Application.ScreenUpdating = True
End Sub

Si besoin, si cela t'intéresse, Robert ou un autre pourront certainement l'adapter pour toi si tu n'y arrives pas. Mets nous un bout de fichier sinon.
 
Re : Aide pour copier-coller une ligne

Bonsoir franckylecake,

Tout d'abord évite d'utiliser des mots réservés aux codes VBA, ici Selection dans le nom de la procédure, et non une fonction comme tu dis.
Ensuite, elle est où la copie dans le code?
Cette boucle ne fait qu'incrémenter une variable ...
Il manque quelque des explications.

Edit: salut Brigitte 🙂, ça fait plaisir de te croiser
 
Re : Aide pour copier-coller une ligne

Bonjour,

Merci à vous pour vos réponses.
J'ai essayé de me dépatouiller avec tes codes Brigitte mais je suis perdu 😕

Je mets mes 2 fichiers en pièces jointes:
Gestion de la paie 2009: celui dans lequel la fonction va s'exécuter.
Gestion de la paie 2009 - ASO: le fichier dans lequel se situe la ligne à copier.

La fonction sera exécutée dans la cellule du premier de chaque mois dans le fichier "Gestion de la paie 2009". Celle-ci doit importer la ligne correspodante au collaborateur (ASO) et au mois. Les onglets concernés sont les onglets "comptes"

Dans l'idéal, ma fonction devra être à 2 entrée: le mois et le collaborateur de manière à aller dans le fichier correspondant à chaque collaborateur.

Merci à vous pour votre aide
 

Pièces jointes

Re : Aide pour copier-coller une ligne

Bonjour le fil, bonjour le forum,

FrankyleCake je te propose la macro événementielle BeforDoubleClick ci-dessous. Elle fonctionne au double-clic dans le nom (Colonne A) d'un collaborateur. Elle va ouvrir le classeur correspondant, repérer la date et copier la ligne.

Toutefois pour que cette macro fonctionne il faut que certaines conditions soient remplies. D'abord il faut que tous les classeurs se trouvent dans le même répertoire que le fichier Gestion de la paie - 2009.xls. Ensuite il faut que le nom soit construit comme dans ton exemple c'est à dire, Paie - ABC.xls ou ABC correspond au nom du collaborateur.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim c As String 'déclare la variable c (Collaborateur)
Dim d As Date 'déclare la variable d (Date)
Dim ch As String 'déclare la variable ch (CHemin)
Dim dest As Range 'déclare la variable dest (DESTination)
 
ch = ThisWorkbook.Path & "\" 'définit la variable ch
 
If Target.Column <> 1 Then Exit Sub 'si le double-clic a lieu ailleurs que dans la colonne A, sort de la procédure
 
Cancel = True 'annule le mode "Edition" lié au double-clic
If Target.Value = "" Or Target.Value = "Total" Then Exit Sub 'si cellule vide ou contenant "Total", sort de la procédure
c = Target.Value 'définit la variable c
 
If Target.Offset(-1, 0).Value = "" Then 'condition : si la cellule au dessus est vide
    d = Target.Offset(-1, 1).Value 'définit la variable d
Else 'sinon
    d = Target.End(xlUp).Offset(-1, 1).Value 'définit la variable d
End If 'fin de la condition
 
Workbooks.Open (ch & "Paie - " & c & ".xls") 'ouvre le classeur du collaborateur correspondant
 
Set dest = ActiveWorkbook.Sheets("Comptes").Columns(2).Find(d).Offset(1, 0) 'définit la variable dest
Range(Target.Offset(0, 1), Target.End(xlToRight)).Copy dest 'copy et colle la ligne
End Sub
 

Pièces jointes

Re : Aide pour copier-coller une ligne

Bonjour à tous,

Merci Robert pour cette macro. Elle correspond à tout ce dont j'ai besoin. J'ai placé tous mes fichiers dans le même répertoire. Cependant, quand je double clique dans ma colonne A, je reste en mode édition et la macro ne s'exécute pas. Je ne sais pas si c'est du au fait que les fichiers soient dans un répertoire partagé sur sugarsync.
Merci d'avance
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour