Macro bouton fin de tableau

Bonjour,

Je recherche depuis quelques jours une macro pour faire en sorte que lorsque je clic sur un bouton la ligne ex: A23M23 soit copié et ajoutée

à la fin du tableau mais d'un autre onglet.

Pour le moment j'arrive à faire que la ligne soit bien copiée et ajoutée à l'onglet COMMANDE.

Le problème est que si je met plusieurs bouton sur chaque ligne à copier quand je clic cela remplace la ligne dans le tableau et non l'ajouter à la suite.

Voici le code que j'ai :

Private Sub CommandButton1_Click()
ActiveSheet.Unprotect
Dim DerLign As Byte
derligne = Worksheets("COMMANDE").Range("A1").End(xlUp).Row
Range("A23:M23").Copy
Sheets("COMMANDE").Range("A" & derligne + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Mon but final est que mon client recoit une liste excel de produit genre :

capture01

Il marque la quantité dans la dernière colonne (25,10,5). et ensuite quand il clic sur le bouton ca ajoute la ligne au tableau COMMANDE (onglet) avec la quantité et ainsi de suite pour créé une liste de commande de produit qu'il à besoin dans 955 ligne de produits.

Voici les onglets :

capture02

Voici le résultat mais si je clic sur le bouton 1 ou 2 ou 3 ça remplace la 1 ere ligne et non passer à la ligne suivante :

capture03

Merci pour votre aide.

Y.

Bonjour,

Votre code pour trouver la dernière ligne n'est pas correct.

Utilisez cette ligne :

Worksheets("COMMANDE").Cells(Worksheets("COMMANDE").Rows.Count, 1).End(xlUp).Row

En effet ici vous partez de A1 et montez tout en haut, or vous êtes déjà tout en haut, donc la dernière ligne renvoyée est la 1 systématiquement auquel est ajouté +1 pour le collage ce qui écrase systématiquement les datas.

Cdlt,

Super merci ça marche nickel .

Je vais devoir mettre un bouton sur chaque ligne et changer la valeur Range("A23:M23").Copy à chaque ligne alors et tout fonctionnera.

Maintenant si vous avez une autre solution car j'ai 955 ligne à faire je suis preneur sinon je me lance dans un travail à la chaine ;-)

Merci en tous cas pour l'aide !

Bonne journée.

Y.

Bonjour,

Pourquoi ne pas récupérer le numéro de la ligne où le client se trouve via l'argument LIGNE = ActiveCell.Row que vous mixez à votre Range("A"&LIGNE&":M"&LIGNE).Copy.

Ou sinon encore plus simple, faire un requêtage POWERQUERY sur les quantités >0. Ce qui permettra de tout faire en un seul clic sur un seul bouton.

Mais quoiqu'il en soit, il me sera nécessaire d'avoir un semblant de fichier.

Cdlt,

Bj

Si je rajoute l'argument ligne est ce que l'emplacement du bouton le clic va prendre en compte la ligne ou le bouton se situe ?

Donc le code devra donner :

Private Sub CommandButton1_Click()
ActiveSheet.Unprotect
Dim DerLign As Byte
derligne = Worksheets("COMMANDE").Cells(Worksheets("COMMANDE").Rows.Count, 1).End(xlUp).Row
Range("A&LIGNE&:M&LIGNE").Copy
Sheets("COMMANDE").Range("A" & derligne + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Ca me donne une erreur :

erreur d'exécution 1004

La méthode range de l''object' worksheet à échoué.

Merci.

Bonjour,

Non c'est l'emplacement de la cellule sélectionnée qui va déterminer la ligne.

Il faut que vous précisiez votre besoin exact. "L'export" doit il se faire à chaque quantité renseignée ? Tout à la fin ? Pour chaque ligne ou d'un coup pour l'ensemble des lignes ?

Ces paramètres ont une incidence certaine sur la façon de construire le code et il est nécessaire d'y apporter une réponse.

Ici LIGNE n'est pas défini comme étant la valeur de l'Activecell.Row, d'où l'erreur.

PS : Je renouvelle ma demande d'un fichier, en MP si vous ne souhaitez pas le divulguer aux yeux de tous.

Cdlt,

Sujet Résolu !

Merci à tous et en particulier à Ergotamine ;-)

bonne journée.

Y.

Rechercher des sujets similaires à "macro bouton fin tableau"