Il n'est pas question de ça.
Il est question du fait que vous ne nous donnez pas d'éléments nous permettant de constater que vous faites des efforts par vous même.
Déjà vous parler de macro mais nous communiquez un fichier .xlsx (donc sans macro)
Ensuite vous dites que vous avez tenté, mais nous, nous ne voyons rien de ces tentatives.
Option Explicit
Sub EnregistrerFacture()
Dim DataRow As Range
Dim RefFacture As String
Dim idxFacture As Variant
Dim action As String
action = "enregistré !" ' Pour message final
'
' Récupérer la référence de la facture pour contrôle d'existence
RefFacture = ThisWorkbook.Sheets("Facture(2)").Range("C13")
With ThisWorkbook.Sheets("BDD-CHANTIERS").ListObjects("T_DEVISS")
'
' Chercher la référence de la facture dans la colonne
idxFacture = Application.Match(RefFacture, .ListColumns("N°Facture").Range, 0)
'
' Si trouvée : facture déjà enregistré
If Not IsError(idxFacture) Then
'
' Demander ce que souhaite faire l'utilisateur
Select Case MsgBox("Une facture à la référence '" & RefFacture & "' semble déjà exister dans la table des factures." & vbCrLf & vbCrLf & _
"Modifiez la facture existante ?" & vbCrLf & vbCrLf & _
"Si vous cliquez sur 'Non' une nouvelle ligne sera créée." & vbCrLf & _
"Si vous cliquez sur 'Annuler' l'enregistrement n'aura pas lieu.", vbQuestion + vbYesNoCancel, "Enregistrer une facture")
'
' L'utilisateur à répondu oui, récupéré la ligne de la facture pour modifications
Case vbYes
Set DataRow = .ListRows(idxFacture).Range
action = "modifié !"
' L'utilisateur à répondu 'annuler'
Case vbCancel
action = "abandon de l'enregistrement ou la modification !"
GoTo FIN
End Select
End If
'
' si aucune ligne alors en créer une
If DataRow Is Nothing Then
If .InsertRowRange Is Nothing Then
Set DataRow = .ListRows.Add().Range
Else
Set DataRow = .InsertRowRange
End If
End If
End With
'
' Ecriture des données dans la ligne
With ThisWorkbook.Sheets("Facture(2)")
DataRow(1, 37).Value = .Range("G52").Value ' TVA2
DataRow(1, 35).Value = .Range("C14").Value ' Date2
DataRow(1, 34).Value = RefFacture ' Ref facture
DataRow(1, 36).Value = .Range("G51").Value ' TOTAL HT
DataRow(1, 38).Value = .Range("G53").Value ' TOTAL TTC
DataRow(1, 40).Value = .Range("E50").Value ' Date Limite de Paiement2
End With
FIN:
MsgBox "Facture '" & RefFacture & "'" & vbCrLf & action, vbInformation, "Enregistrer une facture"
End Sub
Sub Effacer()
Application.ScreenUpdating = False
With ActiveSheet
If .Name = "Facture(2)" Then
.Range("A19:A45").ClearContents
.Range("C13:C14").ClearContents
End If
End With
End Sub
Sub PDFfacture_SAVE()
Dim LaDate As String
LaDate = Format(Date, "dd" & "." & "mm" & "." & "yyyy")
' Facture fichier PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\admin\Downloads" & "Facture" & Sheets("Facture(2)").Range("C13,G51").Value & " le " & LaDate & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=True
' Message de confirmation
MsgBox ("Devis du fichier PDF effectué" & vbCrLf & vbCrLf & "Merci ")
End Sub