XL 2016 Facture Devis Tableau excel

David10

XLDnaute Nouveau
Salut, j'espere que vous aller bien?
je viens vers vous pour savoir si je peux avoir une reponse à ma question.
Depuis ma derniere question sur ce forum j'ai reussi à faire pas mal de chose et d'amélioration au niveau de mon fichier.
Ma Question:
comment je peux faire pour que les données sur ma facture (qui n'est pas trop différent de mon devis à part les quantités et les libellés) avec un bouton s'intègre directement dans ma base de données sur la ligne correspondant à SON devis, pour éviter que je vienne les réécris à la main.

Merci bien d'avance
 
Solution
Un essai à compléter.
VB:
Option Explicit

Sub EnregistrerFacture()
    Dim c As Range, NoDevis As Range, Ligne As Integer
    Dim Bdd As Worksheet, Fact As Worksheet
    Set Bdd = Worksheets("BDD-CHANTIERS")
    Set Fact = Worksheets("facture(3)")

    Set NoDevis = Fact.Range("C15")

    Set c = Range("T_DEVISS[N°Devis]").Find(what:=NoDevis.Value, LookAt:=xlWhole)

    If Not c Is Nothing Then

        Ligne = c.Row    ' n° de ligne du devis

        Bdd.Cells(Ligne, 34) = Fact.Range("c14")
        Bdd.Cells(Ligne, 35) = Fact.Range("c15")
        Bdd.Cells(Ligne, 36) = Fact.Range("g51")

        'faire la suite

    Else
        MsgBox "N° devis " & NoDevis & " non trouvé!"
    End If
    Set Bdd = Nothing
    Set Fact = Nothing...

cp4

XLDnaute Barbatruc
Re,

Si tu veux atteindre le même n° de devis, pourquoi sont-ils en double? FM-08-2021

1638539932405.png
Je suppose que c'est une erreur? Sur la facture, le n° de devis n'y figure pas. Donc, impossible de rechercher ce numéro.
 

Hasco

XLDnaute Barbatruc
Repose en paix

David10

XLDnaute Nouveau
Re,

Si tu veux atteindre le même n° de devis, pourquoi sont-ils en double? FM-08-2021

Regarde la pièce jointe 1123684
Je suppose que c'est une erreur? Sur la facture, le n° de devis n'y figure pas. Donc, impossible de rechercher ce numéro.
Ah desolé, j'ai oublié de le rajouter dans ma modification. il y figure bien juste en dessous de date
 

Pièces jointes

  • Classeur4.xlsx
    69.7 KB · Affichages: 30

David10

XLDnaute Nouveau
Re,

Si tu veux atteindre le même n° de devis, pourquoi sont-ils en double? FM-08-2021

Regarde la pièce jointe 1123684
Je suppose que c'est une erreur? Sur la facture, le n° de devis n'y figure pas. Donc, impossible de rechercher ce numéro.
je veux atteindre le numéro de devis afin que les cellules factures se remplissent. J'ai écris une macro en plus pour cela concernant la facture, mais ça ne marche pas, tu peux le voir dans vba.
 

David10

XLDnaute Nouveau
Un fichier .xlsx ne comporte pas de macro.
c'est juste que je l'ai modifié comme il m'a demandé, sinon j'ai essayer de m'inspirer de ce que tu m'avais mntré pour le devis, pour pouvoir faire pour la facture.
Je demande pas qu'on refasse tout un truc pour moi, j'ai demandé juste de l'aide, comment traduire dans ma macro la ligne "la facture doit se relier au devis pour pouvoir ajouter les données sur la meme ligne", quand j'effectue elle s'ajoute sur une nouvelle ligne.
Désolé si je derange, pas de problème, je vais me debrouiller.
Mais merci pour ton aide
 

Hasco

XLDnaute Barbatruc
Repose en paix
Désolé si je derange, pas de problème, je vais me debrouiller.
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 parlez 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.
 
Dernière édition:

David10

XLDnaute Nouveau
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.
je l'ai tenté mais sur mon fichier personnel. j'ai meme effectué d'autres macro. je vous le montre
 

David10

XLDnaute Nouveau
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
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Décidément vous avez du mal à nous aider. Le fichier .xlsm avec la macro il est où ?
L'autre ne possède pas de feuille facture(2) mais facture(3) et cette feuille contient une facture non remplie. C'est à nous de faire le travail ?

De plus vous ne dites pas avec quelle partie de la macro vous avez du mal.

Je sens que je vais laisser tomber
 

Discussions similaires

Réponses
8
Affichages
430

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla