Incrementation n° + sauvegarde + archivage
Bonjour,
Je viens de me créer un fichier Excel mais j'ai des limites notamment sur les boucles j'ai jamais rien compris en cours
Je souhaite incrémenter un numéro de facture avec une donnée fixe FA puis concaterner l'année en cours et le mois en cours avec un tiret "-" et terminer par l'incrémentation automatique d'un numéro de facture sous cette forme "000001" et bien j'arrive pas. J'ai pourtant lu les sujets sur le forum à ce sujet mais ça marche pas comme je le voudrai.
Mon objectif, quand je clique sur Nelle Fiche c'est d'avoir un nouveau numéro et que l'info reste tjrs dans la même cellule.
J'ai trouvé cela dans le forum qui marche très bien mais sans le prefixe FA devant, sans l'année, sans le mois et sans le tiret, si quelqu'un peut m'aider svp?
Sub NouvelleFiche()
Dim num As Integer
Sheets("MATRICE").Select
Range("D11").Select
num = Range("D11").Value
num = num + 1
Range("D11").Value = num
End Sub
Pour mon autre macro "Sub Sauvegarde" elle fonctionne mais sur la 1ière ligne seulement, d'où mon problème avec la boucle puisque je souhaite qu'au fur et à mesure que je clique sur sauvegarde mes données s'enregistrent en valeur sur les lignes du dessous afin de figer les infos:
voici mon code:
Sub SAUVEGARDE()
'
'
Sheets("MATRICE").Select
Range("B5").Select
Selection.Copy
Sheets("HISTO").Select
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("MATRICE").Select
Range("D11").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("HISTO").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("MATRICE").Select
Range("B6").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("HISTO").Select
Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("MATRICE").Select
Range("B7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("HISTO").Select
Range("D3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("MATRICE").Select
Range("D9").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("HISTO").Select
Range("E3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("MATRICE").Select
Range("B18").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("HISTO").Select
Range("F3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("MATRICE").Select
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 15
Range("B25").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("HISTO").Select
Range("G3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("MATRICE").Select
Range("C25").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("HISTO").Select
Range("H3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("MATRICE").Select
Range("D25").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("HISTO").Select
Range("I3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("MATRICE").Select
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 1
Range("D6").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ""
Range("D7").Select
End Sub
Et enfin pour la Sub ARCHIVE, cela marche également super bien. Ma fiche va bien s'enregistrer dans mon dossier sur C sauf que j'aimerai que le nom de ma fiche quand je l'archive porte le numéro de la facture FA+ANNEE +MOIS + INCREMENTATION et à aujourd'hui la fiche s'enregistre sous "classeur".
Si quelqu'un peu m'aider merci beaucoup
Salut Fanny,
premières pierres de cet immense édifice...
Sub NouvelleFiche()
'
Dim sFact$
'
With Worksheets("PRESTATIONS")
.[M2] = Format(.[M2] + 1, "00000")
sFact = "FA" & CStr(.[L2]) & CStr(.[K2]) & "-" & CStr(Format(.[M2], "00000"))
End With
Sheets("MATRICE").Range("D11").Value = sFact
'
End Sub
Sub SAUVEGARDE()
'
Dim sWk As Worksheet
'
Set sWk = Worksheets("HISTO")
'
With Worksheets("MATRICE")
iRowA = .Range("A" & Rows.Count).End(xlUp).Row + 1
For x = 1 To 9
sWk.Range(Chr(64 + x) & iRowA).Value = Choose(x, .[D11], .[B5], .[B6], .[B7], .[D9], .[B18], .[B25], .[C25], .[D25])
Next
End With
'
End Sub
A+
Bonsoir curulis57,
Un immense merci pour ton aide, j'ai honte d'être aussi nulle
La macro "Nouvelle facture" marche super bien, mais j'ai des questions pour bien comprendre, pourquoi un point juste devant la cellule M2 et que signifie la différence entre les parenthèses et les crochets dans la formules? Est-ce pour figer les données?
Et pour la formule sFact = ça veut dire quoi et idem pour Cstr?
Pour la macro "Sauvegarde" j'ai un problème avec iRowA, est-ce du à mon titre sur la 1ière ligne et mes colonnes? Dois je lui dire de commencer à copier sur la 3ième ligne? Il met "Erreur Compilation" - "Variable non définie". Puis je te solliciter encore une fois stp? Merci
Oui je crois que je me suis penchée sur un gros travail
Je trouve ce site super bien, le partage de connaissances et la mise en place de fichiers qui s'automatisent.....mais quel gain de temps, merci à la technologie et au langage VBA
Salut Fanny,
déso, le temps passe vite et les distractions sont nombreuses ici...
- pourquoi un point juste devant la cellule M2 ?
Parce que j'utilise WITH Worksheets("...") ce qui économise des tonnes de répétitions. Dans le bloc WITH...END WITH, tout objet se rapportant à la feuille renseignée DOIT être précédé d'un point : Worksheets("...").[M2] ;
- parenthèses ou crochets : ce n'est que la syntaxe imposée par VBA ;
[M2] ou Range("M2") ou Cells(2,13e colonne) ciblent la même cellule ;
- sFact = "FA" & CStr(.[L2]) & CStr(.[K2]) & "-" & CStr(Format(.[M2], "00000")), c'est la construction de ton numéro de facture, comme demandé en format STRING (texte) ;
- Cstr = Convert to STRing, utilisé pour convertir un nombre en format texte ;
- iRowA
Me suis trompé, m'dame !
iRowA = sWk.Range("A" & Rows.Count).End(xlUp).Row + 1
Sub SAUVEGARDE()
'
Dim sWk As Worksheet
'
Set sWk = Worksheets("HISTO")
'
With Worksheets("MATRICE")
iRowA = sWk.Range("A" & Rows.Count).End(xlUp).Row + 1
For x = 1 To 9
sWk.Range(Chr(64 + x) & iRowA).Value = Choose(x, .[D11], .[B5], .[B6], .[B7], .[D9], .[B18], .[B25], .[C25], .[D25])
Next
End With
'
End Sub
Avec plaisir,
A+
Bonjour Mr curulis57
Merci beaucoup pour toutes les explications
Bonnes fêtes de fin d'année,