numéro de facture automatique

riegel

XLDnaute Nouveau
Bonjour à toutes et tous,

J'alimente une base de données sous Excel dans laquelle j'aimerais incrémenter un numéro de facture automatique.
En A1 j'entre une date, B1 un nom, C1 une adresse, ... en F1 un numéro de facture de type KBS5101.

Mon souhait est que le numéro de facture en colonne F se renseigne automatiquement dès que je remplis la case A. En F2, j'obtiendrais donc KBS5102.
Bien entendu le numéro de facture généré ne doit pas avoir été déjà affecté dans les lignes précédentes.

J'espère que ma demande est suffisamment claire, et vous remercie par avance de votre aide.

Cordialement,

riegel.
 

juju_69

XLDnaute Occasionnel
Re : numéro de facture automatique

Hello,

Voici une solution à placer dans le code vba de ta feuille :
Il se déclenche à partir de la ligne 3

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A:A")) Is Nothing Then
If Application.Intersect(Target, Range("a1:a2")) Is Nothing Then

If ActiveCell.Column = 1 Then
If Cells(ActiveCell.Row - 2, 1) = "" Or Cells(ActiveCell.Row - 2, 6) = "" Then
MsgBox "la ligne précédente n'est pas totalement renseignée"
Exit Sub
End If

If Cells(ActiveCell.Row - 1, 6) <> "" Then
reponse = MsgBox("Attention le N° de facture est déjà renseigné voulez vous l'écraser ?", vbYesNo)
If reponse = vbNo Then Exit Sub
End If

Cells(ActiveCell.Row - 2, 6).Select
Selection.AutoFill Destination:=Range(Cells(ActiveCell.Row, 6), Cells(ActiveCell.Row + 1, 6)), Type:=xlFillDefault
Cells(ActiveCell.Row + 2, 1).Select
End If

If ActiveCell.Column = 2 Then
If Cells(ActiveCell.Row - 1, 1) = "" Or Cells(ActiveCell.Row - 1, 6) = "" Then
MsgBox "la ligne précédente n'est pas totalement renseignée"
Exit Sub
End If

If Cells(ActiveCell.Row, 6).Value <> "" Then
reponse = MsgBox("Attention le N° de facture est déjà renseigné voulez vous l'écraser ?", vbYesNo)
If reponse = vbNo Then Exit Sub
End If
Cells(ActiveCell.Row - 1, 6).Select
Selection.AutoFill Destination:=Range(Cells(ActiveCell.Row, 6), Cells(ActiveCell.Row + 1, 6)), Type:=xlFillDefault
Cells(ActiveCell.Row + 1, 1).Select
End If
End If
End If
End Sub
 

Discussions similaires

Réponses
14
Affichages
1 K

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia