Code pour générer un numéro de facture

Calvus

XLDnaute Barbatruc
Bonsoir,

Problème de code relativement simple à priori.

J'ai un classeur contenant plusieurs onglets dessinés de la même façon.

J'ai crée un bouton sur le ruban afin de générer un numéro sur ma cellule active.
Ceci marche.

Mon souci est d'incrémenter un nouveau numéro de référence.
La première partie du code fonctione :
Code:
Sub Bouton_Facture()
ActiveCell = Sheets("feuil3").Range("B35") + 1

C'est ensuite que ça se gâte... Et on ne se moque pas, j'essaye !
Code:
i = Range("B35")
For i = 1 To i = 1000
i = Range("B35") + 1
Next i
End Sub

Ici il ne se passe rien.
Ce que j'aimerais, évidemment, c'est de pouvoir repartir de mon dernier numéro.

Merci de votre aide.
 

Pièces jointes

  • Bouton Facture.xlsm
    12.5 KB · Affichages: 44
  • Bouton Facture.xlsm
    12.5 KB · Affichages: 49
  • Bouton Facture.xlsm
    12.5 KB · Affichages: 49

Calvus

XLDnaute Barbatruc
Re : Code pour générer un numéro de facture

Bonsoir à tous,

Pour compéter ma demande, je souhaite ajouter à ma dernière feuille, en plus du numéro de facture donc, les informations suivantes :

Nom de l'onglet
La date de la saisie, à savoir celle du jour (aujourd'hui)
Et le mois de la date de la facture.

C'est ce dernier point qui pose problème, ayant normalement réussi à régler les 2 premiers.

Tous mes onglets, il y en a plus de 10 dans le fichier original, sont organisés de la même façon.
Je sélectionne une cellule(encadrée pour l'exemple), je démarre la macro.
Celle-ci insère un numéro, en feuille recap, puis dans ma cellule sélectionnée, copie la cellule du dessous de la même feuille, puis insère la date du jour en colonne D de la feuille recap, et enfin colle la date copiée en colonne C.

Ce que j'aimerais, est d'extraire le mois de cette dernière date. Exemple en C35 et C36 de recap.
J'ai essayé avec indirect mais sans succès. J'ai laissé la ligne dans la macro.

Une seconde question : mon code est il cohérent de la manière dont je l'ai rédigé (avec votre aide d'ailleurs pour le début) et fonctionnera t'il ainsi sans soucis ?

Code:
Sub Bouton_Facture()


x = Sheets("Recap").Range("B" & Rows.Count).End(xlUp).Row
ActiveCell = Sheets("Recap").Range("B" & x) + 1
                        
                        ActiveCell.Offset(1, 0).Copy
                        Nom_Onglet = ActiveSheet.Name

Sheets("Recap").Range("B" & x + 1) = ActiveCell
                        
                        Sheets("Recap").Select
                        Range("A300").End(xlUp).Offset(1, 0).Select
                        ActiveCell = Nom_Onglet
                        
                        ActiveCell.Offset(0, 3).Select
                        ActiveCell.FormulaR1C1 = "=TODAY()"

 ActiveCell.Offset(0, -1).Select
                        ActiveSheet.Paste
                        
                        'Comment remplacer ici la cellule D36 par la cellule active ?
                        'ActiveCell.Formula = "=TEXT(indirect(""d36""),""mmmm"")"
 
End Sub
Merci de vos réponses.
 

Pièces jointes

  • Bouton Facture 2.xlsm
    21.9 KB · Affichages: 42

Staple1600

XLDnaute Barbatruc
Re : Code pour générer un numéro de facture

Bonsoir à tous

Calvus
Voici ma "revisitation"* de ton code.
Si tu as des questions , n'hésites pas ;)
(Enfin, laisses passer la nuit, car là présentement, je vais au dodo)
Code:
Sub Bouton_Facture()
Dim x As Long, r As Range
Set r = ActiveCell
With Sheets("Recap")
    x = .Range("B" & Rows.Count).End(xlUp).Row
    r = .Range("B" & x) + 1
    .Range(.Cells(x + 1, "A"), .Cells(x + 1, "D")) = _
    Array(r.Parent.Name, r.Value, Format(r.Offset(1, 0).Text, "mmmm"), Date)
End With
End Sub

NB: *: c'est juste pour la beauté du geste car ton code tel que tu l'as écrit fonctionne.
 

Si...

XLDnaute Barbatruc
Re : Code pour générer un numéro de facture

re

.
Si, merci également, mais j'avoue que je ne comprends pas très bien...

Ma demande me semblait claire depuis le début et j'avais indiqué dès le premier post que plusieurs onglets étaient concernés. Je l'ai à nouveau précisé en post 7, mais peut être pas de façon assez précise finalement. Pourtant j'avais joint un fichier avec les numéros affichés sur plusieurs onglets..
Mais bon.

Mais si puisque maintenant tu fournis un fichier support plus précis (feuilles, cellules concernées mises en évidence) !
La macro de Staple :D à ma sauce (première réponse) dans ThisWorbook* donnerait :
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal R As Range)
  If Sh.Name = "Recap" Then Exit Sub
  If Not IsDate(R(2, 1)) Then Exit Sub
  Dim C As Range
  Set C = Feuil3.[A65000].End(xlUp)(2)
  R = C(0, 2) + 1
  C.Resize(1, 4) = Array(Sh.Name, R, (R(2, 1)), Date)
  C(1, 3).Resize(1, 2).NumberFormat = "m/d/yyyy"
End Sub

* il y a tellement des problèmes avec les "ActiveX" en ce moment que je préfère les éviter dans mes réponses
 

Pièces jointes

  • N° facture .xlsm
    18.9 KB · Affichages: 39

DoubleZero

XLDnaute Barbatruc
Re : Code pour générer un numéro de facture

Bonjour, le Fil :), le Forum,

Si:D:D:D des tris étaient effectués :rolleyes: dans l'onglet "Recap", le code suivant devrait éviter de mauvaises surprises...

Code:
Option Explicit
Sub Numéro_sans_surprise()
    Selection = Application.WorksheetFunction.Max(Sheets("Recap").Columns("a:a")) + 1
    With Sheets("Recap").Range("a" & Rows.Count).End(xlUp)(2)
        .Value = Selection
        .Offset(, 1) = ActiveSheet.Name
        .Offset(, 2) = Date
        .Offset(, 3) = Format(Date, "mmmm")
    End With
End Sub

A bientôt :):)
 

DoubleZero

XLDnaute Barbatruc
Re : Code pour générer un numéro de facture

Re-bonjour,

Pour échapper à la :mad: guerre des boutons :mad:, un autre essai avec ce code, logé dans le module "ThisWorkbook" :

Code:
Option Explicit
Private Sub Workbook_SheetBeforeDoubleClick(ByVal o As Object, ByVal c As Range, Cancel As Boolean)
    If o.Name <> "Recap" Then
        c = Application.WorksheetFunction.Max(Sheets("Recap").Columns("a:a")) + 1
        With Sheets("Recap").Range("a" & Rows.Count).End(xlUp)(2)
            .Value = c
            .Offset(, 1) = o.Name
            .Offset(, 2) = Date
            .Offset(, 3) = Format(Date, "mmmm")
        End With
    End If
    Cancel = True
End Sub

A bientôt :):)
 

Calvus

XLDnaute Barbatruc
Re : Code pour générer un numéro de facture

Bonjour Staple, Si, Suze Anne....., le forum,

Encore une fois, merci à vous trois ainsi qu'à Pierrejean qui m'a mis sur la voie.

Staple, je ne comprends rien à ton code. J'ai essayé pourtant ! J'ai saisi l'idée mais je dois chercher ce que font Array etc.

Si, ton fichier fonctionne nickel, malgré le format en colonne C. Finalement se serait bien de le conserver en inscrivant le mois en lettres à coté. Je vais voir si je trouve.
Merci pour les explications, je peux ainsi comprendre la fonction de chaque ligne, même si ce qui y est inscrit est parfaitement incompréhensible. Tu m'as encore plus paumé que Staple !

Suze ;), merci de ton aide. Huitième boite de Doliprane à la tentative de compréhension de ton code !
J' ai tout de même saisi les grandes lignes là aussi me semble t-il. Il ressemble à celui de Staple d'ailleurs. Les Offset sont plus compréhensibles pour moi.
Par contre, une petite erreur à signaler, le mois affiché en colonne C' est systématiquement février.
Et le tri uniquement pour que ce soit en colonne A ?


Je vais donc avancer et revenir vous embêter pour des explications.

En attendant, mon bout de code à moi :


Option Very Explicite
In excel
with
.moult.tentatives
.several.arrachages_de_cheveux
I'm a
Very
Big
Ane
End with


A+
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Code pour générer un numéro de facture

Re

Re-bonjour,
Ah !!!!!!!!! Hi, Hi Hi ...

est-il vrai qu'après un abus de Suze, l'âne rit ?
Désolé ;):D pour ce mauvais jeu de mot mais c'était surtout pour te faire un clin d'oeil avant de dire à Calvus que son Calv...aire n'est pas fini. Le plus dur reste à faire : tout remettre en place après suppression d'un numéro déjà attribué.

Nota : pour avoir seulement le nom du mois le format est "mmmm"
 

DoubleZero

XLDnaute Barbatruc
Re : Code pour générer un numéro de facture

Re-bonjour,

...est-il vrai qu'après un abus de Suze, l'âne rit ?...

Moi pas savoir car moi pas aimer :( la suze ! Beurk !

...c'était surtout pour te faire un clin d'oeil avant de dire à Calvus que son Calv...aire n'est pas fini...

Merci beaucoup, Si:):):), pour le clin d’œil mais... chercherais-tu :confused: à noyer de désespoir notre petit poisson ?

A bientôt ;):D
 

Staple1600

XLDnaute Barbatruc
Re : Code pour générer un numéro de facture

Bonsoir à tous

Staple, je ne comprends rien à ton code.
J'ai essayé pourtant ! J'ai saisi l'idée mais je dois chercher ce que font Array etc.
(c'est l'essentiel ;))

Si, ton fichier fonctionne nickel, malgré le format en colonne C. Finalement se serait bien de le conserver en inscrivant le mois en lettres à coté. Je vais voir si je trouve.
Merci pour les explications, je peux ainsi comprendre la fonction de chaque ligne, même si ce qui y est inscrit est parfaitement incompréhensible.
Tu m'as encore plus paumé que Staple !
Conclusion , je refile la patate chaude à Si... ;)

NB:
[phrase d'évitement du quiproquo post-apéritif]
Étant entendu que la patate n'est pas un membre du forum présent dans ce fil.
/[phrase d'évitement du quiproquo post-apéritif]
 
Dernière édition:

Calvus

XLDnaute Barbatruc
Re : Code pour générer un numéro de facture

Bonsoir,
Oh la la la la ! Mais que se passe t-il sur ce forum ?


Re



est-il vrai qu'après un abus de Suze, l'âne rit ?
Désolé ;):D pour ce mauvais jeu de mot mais c'était surtout pour te faire un clin d'oeil avant de dire à Calvus que son Calv...aire n'est pas fini. Le plus dur reste à faire : tout remettre en place après suppression d'un numéro déjà attribué.

Nota : pour avoir seulement le nom du mois le format est "mmmm"


Je vois que tu n'as pas attendu pour l'apéro...et apparemment, ça ne te fait pas peur d'abuser de la boisson...:p
Et qui te dit que je suis petit d'abord ?? :)


Re-bonjour,



Moi pas savoir car moi pas aimer :( la suze ! Beurk !



Merci beaucoup, Si:):):), pour le clin d’œil mais... chercherais-tu :confused: à noyer de désespoir notre petit poisson ?

A bientôt ;):D


La suze tu dis non, mais pas à l'apéro manifestement, toi non plus. Et tu n'aurais pas peur d'abuser de la poisson...:p


Bonsoir à tous


Conclusion , je refile la patate chaude à Si... ;)

NB:
[phrase d'évitement du quiproquo post-apéritif]
Étant entendu que la patate n'est pas un membre du forum présent dans ce fil.
/[phrase d'évitement du quiproquo post-apéritif]

Notre ami n'est pas en reste non plus !
Et tu ne vas pas te débarrasser de moi comme ça. Je sais nager en eaux troubles !
D'ailleurs, quelqu'un a des nouvelles de Carcharodon ?

Nobbe buit les betits...:confused:
 

Si...

XLDnaute Barbatruc
Re : Code pour générer un numéro de facture

re

Comment as-tu deviné que je préfère le Calva... mais pas pour accompagner les patates de Staple (qui aurait été plus sympa en me refilant aussi ses endives, au lieu de m'asticot er) ;) !

J'espère que n'as pas perdu espoir : je ne tenais vraiment à te décourager :eek:.
Il y a des cas où une solution donnée compte plus que sa construction. Maintenant pour celui qui veut progresser dans la programmation ...
 

Calvus

XLDnaute Barbatruc
Re : Code pour générer un numéro de facture

Bonsoir,

Si, j'ai hésité entre ton code et celui de DoubleZéro, et finalement opté pour le tien, le fait de se placer sur ma cellule pour déclencher l’événement me convenant. (DB, désolé de ne pas t'avoir retenue sur ce coup là, j'espère tu ne va pas encore me traiter de petit...:)).

En revanche comment faire pour avoir la colonne C ( sur ton fichier joint) en format "mmmm" et la colonne D en "m/d/yyyy" ?

Mersi..
 

Discussions similaires

Réponses
2
Affichages
240

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote