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 Quand je vois la réponse je me dis en quelques lignes c'est finalisé alors que moi j'ai fait 2 pages de VBA, je suis ridicule.

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,

Rechercher des sujets similaires à "incrementation sauvegarde archivage"