Facture-Base de donnée

Patoux

XLDnaute Nouveau
Bonjour groupe,

Je ne sais pas si cette question à déjà été posée, si oui dsl et me fournir le lien, car pas trouver.

J'ai débuter la fabrication de mon propre fichier excel qui va gérer mes factures. Jusqu'à présent tout va bien. Je réussi à avoir le résultat souhaité.

Voici un peux mon concept.
J'ai une feuille "Facture" (dans mon fichier excel nommé maître, avec les données des clients) que je remplie la description, frais.. de mon travail. Lorsque j'ai terminer, j'ai une macro qui copie la feuille "Facture" dans un nouveau fichier excel. Donc, j'ai un fichier excel qui correspond à chaque facture.

Ce que je veux faire lorsque je fait une nouvelle facture, lorsque terminer, j'appuie sur ma macro qui fait une copie dans un nouveau fichier et je voudrais qui ajouter dans ma feuille "résumée" le numéro de la facture. Ainsi, je vais avoir les numéro de facture que j'ai créer pour un suivi.

J'espère que je suis asser clair

En vous remerciant de votre aide
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Patoux

Est-ce que tu as déjà le numéro de facture? Si oui, et le n° de facture se trouve en G5 par exemple.
Dans la macro qui copie la feuille
Dim NumFact As String
NumFact = " - FACT N° " & Range("g5").Value
Activesheet.SaveAs Filename:= Chemin & NouveauNom & NumFact & ".xls"

Dans le cas contaire, il faudra l'ajouter dans la macro d'enregistrement. En G5 tu met 1449 par exemple, ensuite dans la macro Range("g5") = Range("g5") + 1
 

Patoux

XLDnaute Nouveau
Merci pour ta réponse, mais je crois que je me suis mal exprimé. Je veux enregistrer chaque numéro de facture dans une feuille de résumé.

Ex: Lorsque je sauvegarde ma facture il met dans la Feuille3 en A1 = #facture X. Ainsi de suite. Prochaine facture dans la feuille3 en A2 le numéro de la facture suivante.

En espérant être plus clair

Encore merci
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Patoux

Dans ce cas, dans la macro d'enregistrement il faut ajouter ceci

VB:
With Sheets(3)
'Mettre les entêtes, ensuite
lig = .Cells(Rows.count, 1).End(xlUp).Row + 1
'ID avec 1ère lettre du nom et du prénom + n° de ligne
.Cells(lig, 1) = Left(Nom, 1) &Left(Prénom, 1) & "-" & lig - 1
.Cells(lig, 2) = Nom
.Cells(lig, 3) = Prénom
.Cells(lig, 4) = Date de la facture
.Cells(lig, 5) = N° de facture
Et pourquoi pas  .Cells(lig, 6) = Montant de la facture
End With

Pourquoi tout ça me diras-tu?! Vu que tu aura des doublons, mieux vaut avoir dans une colonne un identifiant unique, dans le cas d'une modification ou suppression des données.

Un exemple, en ajoutant une combobox -formulaire pour la recherche

VB:
'À mettre dans le module de la feuille

Private Sub ComboBox1_Change()
  Dim rw
  If ComboBox1 <> "" Then
  With Sheets(3)
  rw = Application.Match(ComboBox1, .Columns(1), 0)
  [F8] = .Cells(rw, "B")
  [F10] = .Cells(rw, "C")
  [F12] = .Cells(rw, "D")
  [F14] = .Cells(rw, "E")
  [F16] = .Cells(rw, "F")
  [F18] = .Cells(rw, "G")
  [F20] = .Cells(rw, "H")
  [F22] = .Cells(rw, "I")
  [F28] = .Cells(rw, "J")
  [F38] = .Cells(rw, "K")
  End With
  Else
  Exit Sub
  End If
End Sub

'---------------------------------------------------
Sub Modifier()
Dim rw
If ComboBox1 <> "" Then
With Sheets(3)
rw = Application.Match(ComboBox1, .Columns(1), 0)
        .Cells(rw, "B") = [F8]
        .Cells(rw, "C") = [F10]
        .Cells(rw, "D") = [F12]
        .Cells(rw, "E") = [F14]
        .Cells(rw, "F") = [F16]
        .Cells(rw, "G") = [F18]
        .Cells(rw, "H") = [F20]
        .Cells(rw, "I") = [F22]
        .Cells(rw, "J") = [F28]
        .Cells(rw, "K") = [F38]
End With
Else
[F8] = Date
End If
    Application.ScreenUpdating = False
    For i = 10 To 38
        Cells(i, 6).MergeArea.ClearContents
    Next i

ComboBox1 = ""
End Sub

Sub Supprimer()
Dim rw
If ComboBox1 <> "" Then
With Sheets(3)
rw = Application.Match(ComboBox1, .Columns(1), 0)
.Row(rw).EntireRow.Delete
End With
Else
Exit Sub
End If
    Application.ScreenUpdating = False
    For i = 10 To 38
        Cells(i, 6).MergeArea.ClearContents
    Next i

ComboBox1 = ""
End Sub
 
Dernière édition:

Patoux

XLDnaute Nouveau
Merci, méchant code :confused:

Ton code est trop compliqué pour moi. Je me débrouille bien avec les macro, mais là c'est du sérieux.

Dans ce code, je ne trouve pas à quel endroit (feuille) qui prend les données pour les copier dans une autre feuille.

Exemple: Dans la feuille "facture" dans la cell a5, copie la donnée dans le tableau de la feuille "resumee".

Svp peu tu m'expliquer ton code

Pour ton conbobox je vais le tester plustart

Merci pour ton aide

With Sheets(3)
'Mettre les entêtes, ensuite
lig = .Cells(Rows.count, 1).End(xlUp).Row + 1
'ID avec 1ère lettre du nom et du prénom + n° de ligne
.Cells(lig, 1) = Left(Nom, 1) &Left(Prénom, 1) & "-" & lig - 1
.Cells(lig, 2) = Nom
.Cells(lig, 3) = Prénom
.Cells(lig, 4) = Date de la facture
.Cells(lig, 5) = N° de facture
Et pourquoi pas .Cells(lig, 6) = Montant de la facture
End With
 

Lone-wolf

XLDnaute Barbatruc
Re

Patoux, tu as bien une macro qui enregistre les factures non??? Ajoute le code dans la macro. Sinon, met le en pièce jointe avec des données bidons et je vais faire le nécessaire.

Sheets 3 est à remplacer par le nom de ta feuille Résumés, donc Sheets("Résumés). Les numéros des colonnes Cells(lig, 1), Cells(lig, 2) tu les remplace par .Cells(lig, "A"), .Cells(lig, "B") , .Cells(lig, "C") etc.

.Cells(lig, 1) = Left(Nom, 1) &Left(Prénom, 1) & "-" & lig - 1
.Cells(lig, "A") = Left(mettre la cellule du Nom, 1) &Left(ici cellule du Prénom, 1) & "-" & lig - 1

En PJ, un classeur exemple. Change le nom, le prénom et le montant; clique sur le bouton"enregistrer", ensuite regarde dans la feuille résumé.
 

Pièces jointes

  • Classeur-exemple.xlsm
    19.4 KB · Affichages: 66
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG