Création d’une macro qui génère un numéro de facture lorsqu’une opération est confirm

excel_noob

XLDnaute Nouveau
Bonjour à tous,

Tout nouveau en VBA, j’essaie de développer un petit bout de code pour automatiser une tâche.
Voilà comment je procède d’habitude.
Lorsqu"un client confirme son paiement, je vais dans la colonne F et j’écris « CONFIRME ». La mise en forme conditionnelle change la couleur de la ligne. Puis j’écris un numéro de facture à la main dans la colonne K, qui correspond au numéro le plus récent +1.

Ce que j’aimerais faire, c’est que lorsque j’appuie sur un bouton, ou mieux, lorsque j’écris "confirmé" dans une cellule de la colonne option, un numéro de facture soit automatiquement généré à l’intersection de la ligne ou vient d’être écrit confirmé et de la colonne K (facture)

Voilà ce que j’ai écris :
Code:
Sub testounet()
'partie 1 on trouve les références de la cellule active
Dim i As String
Dim j As String
i = activecell.Column
j = activecell.Row
'partie 2, on trouve le max
Dim myrange As Range
Dim max As String
Set myrange = Worksheets("2013").Range("k1:k400")
max = Application.WorksheetFunction.Max(myrange)
'partie3, on décale pour se positionner à l'intersection de la colonne facture et de la ligne de la cellule active
'puis on va tout simplement mettre max = max +1
End Sub

Je bute sur la partie 3. Je compte faire en sorte que la fonction s’active quand j’appuie sur un bouton mais c’est vrai que ce serait bien plus pratique si ça pouvait fonctionner lorsque j’écris « confirmé ». Je n’ai pas encore trouvé le moyen de le faire, peut-être avec les évènements.

Merci pour votre coup d’œil avisé.
 

Pièces jointes

  • exemple.xlsm
    39.5 KB · Affichages: 64
  • exemple.xlsm
    39.5 KB · Affichages: 62
  • exemple.xlsm
    39.5 KB · Affichages: 65
G

Guest

Guest
Re : Création d’une macro qui génère un numéro de facture lorsqu’une opération est co

Bonjour,

En utilisant l'évènement Change de la feuille et les possibilités des Tableaux excel:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Range("Tableau22[Option]"), Target) Is Nothing And UCase(Target) = "CONFIRME" Then
            Intersect(Range("Tableau22[Facture]"), Target.EntireRow) = Application.Max(Range("Tableau22[Facture]")) + 1
    End If
End Sub

A+
 

Discussions similaires

Réponses
0
Affichages
148

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87