Microsoft 365 macro avec lien hypertexte et modele de facture

david_aurel

XLDnaute Nouveau
Bonjour à tous,

Je dois à partir de mon tableau ci-joint et mon modèle de facture en indiquant mon numéro de facture en colonne L avec une macro via le bouton "facture créée" créer une nouvelle feuille qui sera renommée avec le numéro de facture à chaque fois que la ligne est remplie et qu'un lien hypertexte depuis une cellule de la colonne L du tableau initial permettre de basculer du tableau à l'onglet contenant la facture au sein du même classeur.

Je vous avoue que j'ai cherché en regardant des tuto Youtube, sur ce forum, tester le mode VBA, mais soit il me manque des champs dans ma macro (j'ai en partie compris comment dupliquer le modèle de facture pour qu'il se créé dans une nouvelle feuille et se renomme avec le numéro de facture de la colonne L, mais le lien hypertexte ne se génère pas), soit je ne rédige pas ma macro correctement.

je suis un peu perdu dans le langage VBA et vous sollicite pour m'aider à pouvoir utiliser mon tableau.
 

Pièces jointes

  • creation facture.xlsx
    20 KB · Affichages: 20

david_aurel

XLDnaute Nouveau
Bonsoir, voilà ce que j'ai commencé à travailler :

VB:
Sub Bouton4_Cliquer()
ligne = Sheets("SOURCE").Range("A1").End(xlDown).Row + 1
Sheets("SOURCE").Range("A" & ligne).Value = Sheets("MODELE FACTURE").Range("B5").Value
Sheets("SOURCE").Range("B" & ligne).Value = Sheets(" MODELE FACTURE").Range("B6").Value
Sheets("SOURCE").Range("C" & ligne).Value = Sheets("MODELE FACTURE").Range("C4").Value
Sheets("SOURCE").Range("D" & ligne).Value = Sheets("MODELE FACTURE").Range("C5").Value
Sheets("SOURCE").Range("E" & ligne).Value = Sheets("MODELE FACTURE").Range("C6").Value
Sheets("SOURCE").Range("F" & ligne).Value = Sheets("MODELE FACTURE").Range("B10").Value
Sheets("SOURCE").Range("G" & ligne).Value = Sheets("MODELE FACTURE").Range("B26").Value
Sheets("SOURCE").Range("H" & ligne).Value = Sheets("MODELE FACTURE").Range("B27").Value
Sheets("SOURCE").Range("I" & ligne).Value = Sheets("MODELE FACTURE").Range("B28").Value
Sheets("SOURCE").Range("J" & ligne).Value = Sheets("MODELE FACTURE").Range("B30").Value
Sheets("SOURCE").Range("K" & ligne).Value = Sheets("MODELE FACTURE").Range("B32").Value

Sheets("MODELE FACTURE").Activate
Sheets("MODELE FACTURE").Cells.Select
Selection.Copy
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = Sheets("MODELE FACTURE").Range("C4") & " " & Sheets("MODELE FACTURE").Range("B5").Value
Sheets(Sheets.Count).Paste
Sheets(Sheets.Count).Shapes.Range(Array("NOUVELLE FACTURE")).Delete

End With

Range("L" & ligne).Hyperlinks.Add Anchor:=.Range("L" & ligne), Address:="", SubAddress:= _ "" &.Range("L" & ligne), TextToDisplay:=""

  
End Sub

PS : désolé pour le titre en majuscules.

Bonne soirée
 
Dernière modification par un modérateur:

Oneida

XLDnaute Impliqué
Bonjour,
Avec ce que j'ai decripte, etant donne que le modele de facture n'est pas remplie.
Le bouton n'est pas necessaire, dans les options macro vous pouvez mettre une combinaison de touche pour lancer la dite macro
exemple: Ctrl+shit+i

VB:
Sub Bouton4_Cliquer()
    Nouvelle_Facture = Sheets("MODELE FACTURE").Range("C4") & " " & Sheets("MODE").Range("B5").Value
    For Each Sh In Worksheets
        If Sh.Name = Nouvelle_Facture Then
            MsgBox "Attention: " & Nouvelle_Facture & " existe deja!"
            Exit Sub
        End If
    Next
    With Sheets("SOURCE")
        ligne = .Range("A1").End(xlDown).Row + 1
        .Range("A" & ligne).Value = Sheets("MODELE FACTURE").Range("B5").Value
        .Range("B" & ligne).Value = Sheets("MODELE FACTURE").Range("B6").Value
        .Range("C" & ligne).Value = Sheets("MODELE FACTURE").Range("C4").Value
        .Range("D" & ligne).Value = Sheets("MODELE FACTURE").Range("C5").Value
        .Range("E" & ligne).Value = Sheets("MODELE FACTURE").Range("C6").Value
        .Range("F" & ligne).Value = Sheets("MODELE FACTURE").Range("B10").Value
        .Range("G" & ligne).Value = Sheets("MODELE FACTURE").Range("B26").Value
        .Range("H" & ligne).Value = Sheets("MODELE FACTURE").Range("B27").Value
        .Range("I" & ligne).Value = Sheets("MODELE FACTURE").Range("B28").Value
        .Range("J" & ligne).Value = Sheets("MODELE FACTURE").Range("B30").Value
        .Range("K" & ligne).Value = Sheets("MODELE FACTURE").Range("B32").Value
        .Range("L" & ligne).Value = Sheets("MODELE FACTURE").Range("C2").Value
    End With
'-------------------------------------
    Sheets("modele facture").Copy After:=Worksheets(Worksheets.Count)
    Sheets(Worksheets.Count).Name = Sheets("MODELE FACTURE").Range("C4") & " " & Sheets("MODELE FACTURE").Range("B5").Value
'---------------------------------------------------

        'Sheets("MODELE FACTURE").Activate
        'Sheets("MODELE FACTURE").Cells.Select
        'Selection.Copy
        'Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = Sheets("MODELE FACTURE").Range("C4") & " " & Sheets("MODELE FACTURE").Range("B5").Value
        'Sheets(Sheets.Count).Paste
        'Sheets(Sheets.Count).Shapes.Range(Array("NOUVELLE FACTURE")).Delete

    With Sheets("SOURCE")
        .Range("L" & ligne).Hyperlinks.Add Anchor:=.Range("L" & ligne), Address:="", SubAddress:= _
                "" & .Range("L" & ligne), TextToDisplay:=""
    End With
End Sub
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,
Merci pour le titre.
Je ne sais pas combien de factures vous allez conserver ainsi par mois ou année, mais cela risque d'être vite la surcharge pondérale pour vos classeurs et vos supports de sauvegarde.
A moins d'être un Dieu omnipotent doté d'ubiquité vous n'arriverez jamais à les consulter toutes en un clin d'œil ou à les imprimer toutes en même temps :)
De plus c'est extrêmement pénalisant pour les recherches, statistiques et autres opérations quotidiennes de calcul, analyse, Tcd, graphiques.
C'est pourquoi je vous conseillerais de les conserver sous forme de tableau de données avec éventuellement un deuxième tableau pour les détails. Chaque ligne de détail, reliée à la ligne mère par le numéro de facture ou autre identifiant unique de facture.
Conservez votre modèle pour la consultation / impression d'une seule facture à la foi au besoin.
Pour les impression en chaîne, il y aura soit vba soit un mailing Word.

Il existe aujourd'hui un outil intégré à excel qui s'appelle power query et qui permet de gérer les relations entre lignes mères d'un tableau et leurs filles d'un autre.

Mais ce n'est qu'un avis
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
156
Réponses
21
Affichages
1 K