Autres Insérer une ligne

francescofrancesco

XLDnaute Junior
Sauver,

Je dois insérer une ligne vide en fonction de la date présentée dans la cellule G1 et du numéro de facture présenté dans la cellule I1.

Chaque nouvelle ligne insérée concerne un numéro de facture non présent dans la liste de la colonne E mais toujours avec une date déjà présente dans la colonne Cette qu'il manque plus d'une facture.

Insérez la ligne vide et insérez quelques données: dans la première cellule, il y aura une cellule progressive, la deuxième cellule la date, la troisième cellule de facture avec le préfixe FT. ou ft. , cinquième cellule uniquement le numéro de facture.

Exemple: saisie de la facture 4 non présente dans la liste:

la nouvelle ligne vide doit être insérée sous le numéro de facture 3 seule variation des données: jour 07/01/2020 ou jour 08/01/2020 selon cellule G1.

Il est à noter qu'à chaque changement de données, il y a une ligne vide.

La date est le 07/01/2020 la ligne vide insérera sous le numéro de facture 3 mais avant la ligne vide, les données de la facture du 07/01/2020.

La date est le 08/01/2020 la ligne vide insérera après le numéro de facture 3 my après la ligne vide, les données de la facture du 08/01/2020.

Si, en revanche, les données de la cellule G1 ne sont pas présentes dans la colonne C et le numéro de facture de la cellule I1 n'est pas présent dans la colonne E

les données doivent être entrées dans une liste finale.



En espérant être utile, j'ai été clair que j'espérais de l'aide car cela ne me concerne pas.
 

Pièces jointes

  • forum.xls
    71 KB · Affichages: 43

job75

XLDnaute Barbatruc
Bon effectivement il faut modifier le 2ème test sur data :
VB:
If CDate(data) < Cells(lig, "B") Or CDate(data) > [B:B].Find("", Cells(lig, "B"), xlValues)(2) Then data = "": data.SetFocus: Exit Sub
Ce n'est pas très facile à comprendre, testez ce fichier (4) avec 60 et 25/02/2020.

Edit : c'est bien sûr Or et non pas And qu'il faut utiliser dans cette ligne de code.
 

Pièces jointes

  • forum(4).xls
    101 KB · Affichages: 5
Dernière édition:

job75

XLDnaute Barbatruc
Avant d'aller dormir testez ce fichier (5) avec le 2ème test sur data :
VB:
If CDate(data) < Cells(lig, "B") Or CDate(data) > [B:B].Find("*", Cells(lig, "B"), xlValues) Then data = "": data.SetFocus: Exit Sub
Je pense que maintenant c'est bon.
 

Pièces jointes

  • forum(5).xls
    113 KB · Affichages: 9

job75

XLDnaute Barbatruc
Bonjour francescofrancesco, le forum,

Je ne vous laisse pas tomber mais vous m'obligez à revoir tout le code avec la variable L :
VB:
Private Sub CommandButton1_Click()
Dim num As Object, data As Object, col As Range, lig As Variant, L&
Set num = TextBox1: Set data = TextBox2: Set col = [E:E]
'---tests sur num---
If Not IsNumeric(num) Then num = "": num.SetFocus: Exit Sub
If Application.CountIf(col, num) Or Val(num) <> Int(num) Then num = "": num.SetFocus: Exit Sub
lig = Application.Match(Val(num), col)
If IsError(lig) Then num = "": num.SetFocus: Exit Sub
'---tests sur data---
If Not IsDate(data) Then data = "": data.SetFocus: Exit Sub
L = lig + 1
While Cells(L, "B") <> "" And col(L) = "" 'boucle en cas de numéro manquant
    L = L + 1
Wend
If CDate(data) < Cells(lig, "B") Or CDate(data) > [B:B].Find("*", Cells(L - 1, "B"), xlValues) Then data = "": data.SetFocus: Exit Sub
'---insertions de lignes et remplissages des cellules---
Application.ScreenUpdating = False
If Cells(L, "B") <> "" Then Rows(L).Insert
Cells(lig, "A").Copy Cells(L, "A"): Cells(lig, "C").Copy Cells(L, "C")
Cells(L, "B") = CDate(data)
Cells(L, col.Column) = Val(num)
If Cells(L + 1, "B") > Cells(L, "B") Then Rows(L + 1).Insert: _
    Cells(L, "A").Copy Cells(L + 1, "A"): Cells(L, "C").Copy Cells(L + 1, "C")
If Cells(lig, "B") < Cells(L, "B") Then Rows(L).Insert: _
    Cells(lig, "A").Copy Cells(L, "A"): Cells(lig, "C").Copy Cells(L, "C")
'---RAZ---
num = "": data = "": num.SetFocus
End Sub
Fichier (6), maintenant vous pouvez entrer 8 et 10/01/2020.

A+
 

Pièces jointes

  • forum(6).xls
    113.5 KB · Affichages: 7

Discussions similaires

Réponses
6
Affichages
361

Statistiques des forums

Discussions
312 202
Messages
2 086 180
Membres
103 152
dernier inscrit
Karibu