Mon programme se bloque : pourquoi ?
- Messages
- 123
- Excel
- 2016 FR
- Inscrit
- 14/04/2013
- Emploi
- retraité après 40 année d'indépendant grossiste en fleurs et six années à la direction des achats d'une usine de moyenne dimension.
bonjour SimKmil,
Y-a-t-il soit des charactères spéciaux et interdits, soit des erreurs dans B12, E10 ou F10
- Messages
- 123
- Excel
- 2016 FR
- Inscrit
- 14/04/2013
- Emploi
- retraité après 40 année d'indépendant grossiste en fleurs et six années à la direction des achats d'une usine de moyenne dimension.
Merci, je vérifie.
- Messages
- 123
- Excel
- 2016 FR
- Inscrit
- 14/04/2013
- Emploi
- retraité après 40 année d'indépendant grossiste en fleurs et six années à la direction des achats d'une usine de moyenne dimension.
Eh oui, en effet, en B12, j'avais la date avec la formule AUJOURHUI() et cela écrivait 14/3/2024 et l'erreur venait de là.
J'ai essayé de mettre un autre format à la date (14 mars 2024) mais ça ne fonctionne toujours pas.
Alors j'ai supprimé ce morceau de code et ça fonctionne.
Pourtant j'aimais de pouvoir sauvegarder avec la date, car il s'agit ici d'une facture que je sauvegarde et je voulais avoir "date-nom-prénom" comme nom de fichier dans le dossier "FACTURES"
Merci de votre aide, si vous voyez une autre possibilité d'ajouter la date, je suis preneur.
Merci et bonne soirée
- Messages
- 123
- Excel
- 2016 FR
- Inscrit
- 14/04/2013
- Emploi
- retraité après 40 année d'indépendant grossiste en fleurs et six années à la direction des achats d'une usine de moyenne dimension.
Et ... encore moi !!
dans le même programme, j'ai toute une partie de mon code qui ne donne aucun résultat - mais aucune erreur signalée; simplement il n'écrit pas ce que je lui demande.
voici le boutde code
'----------------------------------------------------------------
' Inscription automatique des factures dans le journal des ventes
'----------------------------------------------------------------
lig = Sheets("JournaldesVentes").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("JournaldesVentes").Range("A" & lig).Value = Sheets("Facture").Range("B12").Value 'date
Sheets("JournaldesVentes").Range("B" & lig).Value = Sheets("Facture").Range("B12").Value 'date
Sheets("JournaldesVentes").Range("C" & lig).Value = Sheets("Facture").Range("B10").Value 'n° facture
Sheets("JournaldesVentes").Range("D" & lig).Value = Sheets("Facture").Range("E10").Value & " " & Sheets("Facture").Range("F10").Value 'Client
Sheets("JournaldesVentes").Range("E" & lig).Value = Sheets("Facture").Range("G37").Value 'Total TVAC
'-----------------------------------------------------------------------------------
'archiver les factures dans l'historique factures et incrémenter le numéro de facture
'-----------------------------------------------------------------------------------
ligne = Sheets("Historique_facture").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("Historique_facture").Range("A" & ligne).Value = Sheets("Facture").Range("B10").Value 'numero facture
Sheets("Historique_facture").Range("B" & ligne).Value = Sheets("Facture").Range("B12").Value 'date
Sheets("Historique_facture").Range("C" & ligne).Value = Sheets("Facture").Range("E10").Value 'nom
Sheets("Historique_facture").Range("D" & ligne).Value = Sheets("Facture").Range("F10").Value 'prénom
Sheets("Historique_facture").Range("E" & ligne).Value = Sheets("Facture").Range("E11").Value 'adresse
Sheets("Historique_facture").Range("F" & ligne).Value = Sheets("Facture").Range("E12").Value 'code postal
Sheets("Historique_facture").Range("G" & ligne).Value = Sheets("Facture").Range("F12").Value 'localité
Sheets("Historique_facture").Range("H" & ligne).Value = Sheets("Facture").Range("E13").Value 'téléphone
Sheets("Historique_facture").Range("I" & ligne).Value = Sheets("Facture").Range("G35").Value 'total HT
Sheets("Historique_facture").Range("J" & ligne).Value = Sheets("Facture").Range("G37").Value 'total ttc
Sheets("Historique_facture").Range("K" & ligne).Value = Sheets("Facture").Range("B35").Value + Sheets("Facture").Range("B36").Value + Sheets("Facture").Range("B37").Value + Sheets("Facture").Range("B38").Value 'total acomptes
la partie "inscription automatique des factures dansle journal des ventesfonctionne très bien, mais l'autre partie - historique factures - ne fonctionne pas. Purquoi ??
merci encore si vous pouvez m'aider.
Bonsoir,
BsAlv bonsoir,
pour récupérer la date dans le nom de votre fichier vous pouvez utiliser la fonction FORMAT qui transforme une donnée en TEXTE mis sous forme :"LouReeD - " & Format(Range("B12"), "dd-mm-yyyy")
=> LouReeD - 14-03-2024 ce qui devrait être accepté pour un nom de fichier.
Pour l'autre problème une partie de code sortie de son contexte n'est pas vraiment utile pour comprendre les problèmes.
Pouvez-vous fournir votre fichier ?
@ bientôt
LouReeD
- Messages
- 123
- Excel
- 2016 FR
- Inscrit
- 14/04/2013
- Emploi
- retraité après 40 année d'indépendant grossiste en fleurs et six années à la direction des achats d'une usine de moyenne dimension.
- Messages
- 123
- Excel
- 2016 FR
- Inscrit
- 14/04/2013
- Emploi
- retraité après 40 année d'indépendant grossiste en fleurs et six années à la direction des achats d'une usine de moyenne dimension.
voilà le fichier complet.
Merci de votre aide
Bonsoir,
à vérifier : Votre tableau comporte un gros trou ! Du coup la première cellule vide que vous cherchez est très loin vers le bas ! Les données que vous pensez qui ne s'inscrivent pas doivent être celles qui sont tout en bas !
Sinon j'ai quelque peu modifier votre code en ajoutant des With pour regrouper proprement des instructions, puis je vous ai mis un code de remplissage de votre tableau structuré de la feuille Historique_facture :
Sub Facture_suivante()
'Déclaration des variables
Dim NomDossier As String
Dim NomFichier As String
Dim ligne As Integer
Dim lig As Integer
'----------------------------------------------------------------
' Inscription automatique des factures dans le journal des ventes
'----------------------------------------------------------------
With Sheets("JournaldesVentes")
lig = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & lig).Value = Sheets("Facture").Range("B12").Value 'date
.Range("B" & lig).Value = Sheets("Facture").Range("B12").Value 'date
.Range("C" & lig).Value = Sheets("Facture").Range("B10").Value 'n° facture
.Range("D" & lig).Value = Sheets("Facture").Range("E10").Value & " " & Sheets("Facture").Range("F10").Value 'Client
.Range("E" & lig).Value = Sheets("Facture").Range("G37").Value 'Total TVAC
End With
'------------------------------------------------------------------------------------
'archiver les factures dans l'historique factures et incrémenter le numéro de facture
'------------------------------------------------------------------------------------
' le tableau sur cette feuille est un tableau structuré, donc pas besoin de calculer la première ligne vide
' il suffit de dire à VBA d'ajouter une ligne à ce tableau
' ligne = Sheets("Historique_facture").Range("A" & Rows.Count).End(xlUp).Row + 1
' With Sheets("Historique_facture")
' .Range("A" & ligne).Value = Sheets("Facture").Range("B10").Value 'numero facture
' .Range("B" & ligne).Value = Sheets("Facture").Range("B12").Value 'date
' .Range("C" & ligne).Value = Sheets("Facture").Range("E10").Value 'nom
' .Range("D" & ligne).Value = Sheets("Facture").Range("F10").Value 'prénom
' .Range("E" & ligne).Value = Sheets("Facture").Range("E11").Value 'adresse
' .Range("F" & ligne).Value = Sheets("Facture").Range("E12").Value 'code postal
' .Range("G" & ligne).Value = Sheets("Facture").Range("F12").Value 'localité
' .Range("H" & ligne).Value = Sheets("Facture").Range("E13").Value 'téléphone
' .Range("I" & ligne).Value = Sheets("Facture").Range("G35").Value 'total HT
' .Range("J" & ligne).Value = Sheets("Facture").Range("G37").Value 'total ttc
' .Range("K" & ligne).Value = Sheets("Facture").Range("B35").Value + Sheets("Facture").Range("B36").Value + Sheets("Facture").Range("B37").Value + Sheets("Facture").Range("B38").Value 'total acomptes
' End With
' on dimensionne une variable Tableau structuré
Dim MonTab As ListObject
' on dimensionne une variable Ligne de tableau structuré
Dim lRow As ListRow
Dim Temp
' on attribue à la variable tableau le premier tableau de la feuille "Suvi_CNX", comme cela vous pouvez sous Excel donner le nom que vous voulez au tableau
Set MonTab = Sheets("Historique_facture").ListObjects(1)
' avec ce tableau
With MonTab
' on attribue à la variable ligne, la ligne "nouvelle ligne" que l'on crée, pas de chiffre entre parenthèse = une ligne en bas du tableau
Set lRow = .ListRows.Add()
' avec cette ligne
With lRow
' on lui attribue en colonne 1 le numéro de facture
.Range.Cells(1).Value = Sheets("Facture").Range("B10").Value ' je met Now afin d'avoir la date et l'heure pour augmenter la précision
.Range.Cells(2).Value = Sheets("Facture").Range("B12").Value ' ici c'est le nom inscrit dans Excel ou la suite Office, le mieux est d'utiliser le nom de session de l'ordinateur je crois que c'est : Environ("UserName"), donc : .Range.Cells(2).Value = Environ("UserName")
.Range.Cells(3).Value = Sheets("Facture").Range("E10").Value
.Range.Cells(4).Value = Sheets("Facture").Range("F10").Value
.Range.Cells(5).Value = Sheets("Facture").Range("E11").Value
.Range.Cells(6).Value = Sheets("Facture").Range("E12").Value
.Range.Cells(7).Value = Sheets("Facture").Range("F12").Value
.Range.Cells(8).Value = Sheets("Facture").Range("E13").Value
.Range.Cells(9).Value = Sheets("Facture").Range("G35").Value
.Range.Cells(10).Value = Sheets("Facture").Range("G37").Value
Temp = CDbl(Sheets("Facture").Range("B35").Value) + CDbl(Sheets("Facture").Range("B36").Value) + _
CDbl(Sheets("Facture").Range("B37").Value) + CDbl(Sheets("Facture").Range("B38").Value)
.Range.Cells(11).Value = Temp
' on a fini de jouer avec la ligne
End With
' on a fini de jouer avec le tableau
End With
'---------------------------------------------------------------------------------------------------------
'Procédure permettant de réaliser un fichier de sauvegarde
'---------------------------------------------------------
'Affectation des variables
NomDossier = "C:\GECOBAT\FACTURES\"
'Désactiver les messages d'alerte
Application.DisplayAlerts = False
'On crée le nom du fichier de sauvegarde (Date+Nom)
NomFichier = Format(Sheets("B12"), "YYYY-MM-DD") & "_" & Sheets("Facture").Range("E10").Value & "_" & Sheets("Facture").Range("F10").Value & ".xlsm"
'on sauvegarde le fichier de backup
ActiveWorkbook.SaveCopyAs NomDossier & NomFichier
'on affiche le message de confirmation
MsgBox "Votre fichier de sauvegarde intitulé : " & NomFichier & vbNewLine & "dans le dossier suivant : " & NomDossier, vbOKOnly + vbInformation, "CONFIRMATION"
'-------------------------------------------
'Effacement des données
'-------------------------------------------
With Sheets("Facture")
.Range("A16:F19").ClearContents 'vider le corps de facture
.Range("A20:B20").ClearContents 'vider le corps de facture
.Range("E10").ClearContents 'vider le nom
.Range("B35:B38").ClearContents 'vider les acomptes
.Range("B10").Value = .Range("B10").Value + 1 'incrémenter le numéro de facture
.Range("F22:F34").ClearContents 'vider le corps de facture
End With
End Sub
J'ai également testé le fait d'ajouter la date au nom lors de l'enregistrement du fichier.
@ bientôt
LouReeD