Récupérer des valeurs d'une ligne d'un bouton cliqué

Bonjour,

J'ai quelques soucis concernant la mise en place d'une création automatique de facture à partir d'un fichier excel.

Je suis sur une fiche client. Sur cette fiche, j'ai un tableau avec, pour chaque ligne, un intitulé de facture (qu'on pourra générer à partir d'un bouton en bout de chaque ligne). En clair, j'ai 6 factures possible qui respecte le même modèle, mais dont l'intitulé sera différent: Une même fonction est donc appliquée aux différents boutons

Le but est de pouvoir récupérer l'intitulé de la facture de la fiche client (situé dans les cellules A16 à A21 en fct d'ou se trouve le bouton) pour pouvoir le renseigner dans une cellule de la facture (intitulé qui sera donc en fonction de la ligne ou se trouve le bouton):

Est ce possible?

Sub facture()

Dim Chemin As String, Fichier As String

'Chemin où se trouve le fichier à ouvrir
Chemin = "C:\Users\XXXX\Desktop\Ent\Facture"
'Nom du fichier à ouvrir
Fichier = "facture_client.xlsx"
Fichier2 = ThisWorkbook.Sheets("Clients").Range("B4") & "-" & Format(Date, "dd_mm_yy") & ".xlsx"
Fichier_Client = ThisWorkbook.Sheets("Clients").Range("B4") & ".xlsm"

'Empêche le raffraichissement de l'écran
Application.ScreenUpdating = False

'Ouverture du fichier
Workbooks.Open Chemin & "\" & Fichier

Workbooks(Fichier).SaveAs Filename:=Chemin & "\" & Fichier2

'Champs adresse
Windows(Fichier2).Activate
Sheets("Feuil1").Range("C21").Select
ActiveCell.UnMerge
Windows(Fichier_Client).Activate
Sheets("Clients").Range("B5").Copy
Windows(Fichier2).Activate
Sheets("Feuil1").Range("C21").Select
ActiveSheet.Paste
Sheets("Feuil1").Range("C21:D21").Merge
Sheets("Feuil1").Range("C21:D21").Borders.Weight = xlThin

'Champs signé le
Windows(Fichier_Client).Activate
Sheets("Clients").Range("B16").Copy
Windows(Fichier2).Activate
Sheets("Feuil1").Range("B21").Select
ActiveSheet.Paste

'Champs client
Windows(Fichier2).Activate
Sheets("Feuil1").Range("E21").Select
ActiveCell.UnMerge
Windows(Fichier_Client).Activate
Sheets("Clients").Range("B4").Copy
Windows(Fichier2).Activate
Sheets("Feuil1").Range("E21").Select
ActiveSheet.Paste
Sheets("Feuil1").Range("E21:F21").Merge
Sheets("Feuil1").Range("E21:F21").Borders.Weight = xlThin

'Champs date du jours
Windows(Fichier2).Activate
Sheets("Feuil1").Range("F14").Select
ActiveSheet.Range("F14") = Format(Date, "dd mmmm yyyy")

'le raffraichissement de l'écran à true
Application.ScreenUpdating = True
End Sub

Merci de votre aide

Personne?

Bonjour

Joins ton fichier et on regardera ça !

Bye !

Je ne peux pas donner le fichier exact, mais je joins ce à quoi il ressemble. La macro de mon premier message doit être ajoutée à chaque bouton:

Pour faire simple, lorsque je clique sur le bouton de la ligne 16, je voudrais pouvoir récupérer l'intitulé de la facture (A16) pour le mettre dans la cellule A25 d'un classeur "facture_client", la date (B16) pour le mettre dans la cellule B17 d'un classeur "facture_client" et le montant ttc (C16) pour le mettre dans la cellule C25 d'un classeur "facture_client"

Merci

A force de chercher, je tombe beaucoup sur "ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row", mais je ne vois pas du tout à quoi ça correspond, ni comment l'appliquer dans mon cas ...

Un essai, si j'ai bien compris...

Les 2 fichiers doivent être ouverts.

Cela te convient-il ?

Bye !

14facture-client.xlsx (13.12 Ko)

C'est exactement ça, mais ce n'est pas possible d'avoir une seule macro pour l'ensemble des factures?

En clair, ma macro actuelle va récupérer un fichier "facture_client.xlsx", l'enregistrer automatiquement sous la forme "nomclient-Date.xlsx" et remplir les différents champs (dont ceux mentionnés ci-avant).

Sur mon fichier final, je vais avoir à générer 6 factures clients (sur le même model mais avec des informations différentes) et 21 factures "associés" (sur le même model mais avec des informations différentes). Si je dois multiplier les macros, ça risque d'être "lourd" pour le fichier et très vite compliqué.

Désolé mais je ne comprends pas ce que tu veux...

Bye !

Je voudrais savoir si il est possible de récupérer la valeur d'une cellule dans la ligne du bouton cliquer de façon simple et l'incorporer dans le code ci-dessous (de façon à avoir une seule et même macro pour l'ensemble des 6 factures que je vais avoir à gérer: le model est le même, il n'y a que les valeurs qui changent)

Sub facture()

Dim Chemin As String, Fichier As String

'Chemin où se trouve le fichier à ouvrir
Chemin = "C:\Users\XXXX\Desktop\Ent\Facture"
'Nom du fichier à ouvrir
Fichier = "facture_client.xlsx"
Fichier2 = ThisWorkbook.Sheets("Clients").Range("B4") & "-" & Format(Date, "dd_mm_yy") & ".xlsx"
Fichier_Client = ThisWorkbook.Sheets("Clients").Range("B4") & ".xlsm"

'Empêche le raffraichissement de l'écran
Application.ScreenUpdating = False

'Ouverture du fichier
Workbooks.Open Chemin & "\" & Fichier

Workbooks(Fichier).SaveAs Filename:=Chemin & "\" & Fichier2

'Champs adresse
Windows(Fichier2).Activate
Sheets("Feuil1").Range("C21").Select
ActiveCell.UnMerge
Windows(Fichier_Client).Activate
Sheets("Clients").Range("B5").Copy
Windows(Fichier2).Activate
Sheets("Feuil1").Range("C21").Select
ActiveSheet.Paste
Sheets("Feuil1").Range("C21:D21").Merge
Sheets("Feuil1").Range("C21:D21").Borders.Weight = xlThin

'Champs signé le
Windows(Fichier_Client).Activate
Sheets("Clients").Range("B16").Copy
Windows(Fichier2).Activate
Sheets("Feuil1").Range("B21").Select
ActiveSheet.Paste

'Champs client
Windows(Fichier2).Activate
Sheets("Feuil1").Range("E21").Select
ActiveCell.UnMerge
Windows(Fichier_Client).Activate
Sheets("Clients").Range("B4").Copy
Windows(Fichier2).Activate
Sheets("Feuil1").Range("E21").Select
ActiveSheet.Paste
Sheets("Feuil1").Range("E21:F21").Merge
Sheets("Feuil1").Range("E21:F21").Borders.Weight = xlThin

'Champs date du jours
Windows(Fichier2).Activate
Sheets("Feuil1").Range("F14").Select
ActiveSheet.Range("F14") = Format(Date, "dd mmmm yyyy")

'le raffraichissement de l'écran à true
Application.ScreenUpdating = True
End Sub

Il n'y a pas de solutions?

Rechercher des sujets similaires à "recuperer valeurs ligne bouton clique"