Microsoft 365 Problème Débogage VBA

eric72

XLDnaute Occasionnel
Bonjour à tous,
J'ai une macro qui me pose un problème, lorsque j'utilise celle-ci elle fonctionne parfaitement 2 fois et la 3ème fois elle me fait un débogage de type erreur 1004 la méthode cells de l'objet worksheet à échoué ( à la ligne " .Cells(Derligne, 4) = IIf(Date_entree = 0, "", Date_entree") et je ne vois pas du tout pourquoi.
Avez vous une idée et pourquoi seulement 1 fois sur 3 :

Private Sub CommandButton1_Click()
Dim Date_entree As Date
Dim Date_sortie As Date
Dim Derligne As Long

'Contrôle date d'entrée

'If Me.TextBox1.Value <> "" Then
'Date_entree = Format(Me.TextBox1.Value, "dd/mm/yyyy")
'End If

'If Me.TextBox6.Value <> "" Then
'Date_sortie = Format(Me.TextBox6.Value, "dd/mm/yyyy")
'End If
If Me.TextBox1.Value <> "" Then
If Not IsDate(Me.TextBox1.Value) Then
MsgBox "La date d'entrée saisie n'est pas un date valide !"
Me.TextBox1.SetFocus
Exit Sub
Else
Date_entree = CDate(Me.TextBox1.Value)
End If
End If

'Contrôle date de sortie
If Me.TextBox6.Value <> "" Then
If Not IsDate(Me.TextBox6.Value) Then
MsgBox "La date de sortie saisie n'est pas un date valide !"
Me.TextBox6.SetFocus
Exit Sub
Else
Date_sortie = CDate(Me.TextBox6.Value)
End If
End If

'Inhibe l'affichage
Application.ScreenUpdating = False



'Ajouter un nouvel article
If MsgBox("Confirmer la saisie", vbYesNo, "confirmation") = vbYes Then
With ThisWorkbook.Sheets("SAISIE")
.Select
'Déprotection
Call ToutDeproteger
Derligne = .Range("F" & Rows.Count).End(xlUp).Row + 1

.Cells(Derligne, 4) = IIf(Date_entree = 0, "", Date_entree)
.Cells(Derligne, 5) = IIf(Date_sortie = 0, "", Date_sortie)
.Cells(Derligne, 6) = ComboBox1.Value
.Cells(Derligne, 7) = ComboBox2.Value
.Cells(Derligne, 8) = ComboBox3.Value
.Cells(Derligne, 9) = TextBox2.Value
.Cells(Derligne, 10) = TextBox3.Value
.Cells(Derligne, 11) = TextBox4.Value
.Cells(Derligne, 12) = TextBox5.Value
.Cells(Derligne, 16) = TextBox7.Value
End With
End If


'Error handling
On Error GoTo Defaut

Photo = ComboBox4.Value
Image1.Picture = LoadPicture("C:\JCR\Photos Bijoux\" & Photo & ".Jpg")
GoTo FinSub

Defaut:
'Image1.Picture = LoadPicture("C:\JCR\Photos Bijoux\Defaut.Jpg")
'Rafraichir le tableau croisé dynamique
Columns("D:D").NumberFormat = "m/d/yyyy"

Sheets("Stock Par Produit").Select
ActiveWorkbook.RefreshAll
Sheets("SAISIE").Select
Cells.Replace What:="#REF", Replacement:="SAISIE", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
ActiveWorkbook.Save

Unload FormulaireSaisie
Call formuleColC
Call formuleColQ
Call formuleColR

Call ToutProteger
'FormulaireSaisie.Show


FinSub:
'Error handling
On Error GoTo 0

'Protection
Call ToutProteger

'Désinhibe l'affichage
Application.ScreenUpdating = True
End Sub

Merci de votre aide toujours aussi précieuse
Eric
 

job75

XLDnaute Barbatruc
Chez moi quand j'entre la date 24/02/2021 en Date Entrée et clique sur Ajouter il y a bug et Excel plante.

Malgré mes recherches je ne vois pas pourquoi, tout ce que je peux dire :

- en feuille SAISIE les formules de la colonne C ne vont pas du tout, supprimez-les

- votre fichier est probablement vérolé ou endommagé.
 

job75

XLDnaute Barbatruc
dans la colonne C La formule permet d'agrémenter un N° automatique qui tient compte de l'année, du fournisseur, et d'un N° chronologique et c'est important pour moi.
Mettez en colonne C une formule (unique) qui tient la route comme par exemple celle-ci :
Code:
=TEXTE([@[Date entrées]];"aa")&RECHERCHEV([@Fournisseur];Donnees!A$1:B$500;2;0)&" "&LIGNE()-1
 

job75

XLDnaute Barbatruc
Comme je le pressentais au post #10 c'est le tableau structuré de la feuille SAISIE qui était vérolé.

Sur le fichier de votre post #4 :

- convertissez ce tableau en plage

- effacez tous les formats de la feuille

- recréez le tableau structuré

- mettez les colonnes D et E au format Date.

Il n'y a plus de problème avec l'entrée des données via l'UserForm.
 

eric72

XLDnaute Occasionnel
Je crois avoir trouvé, dans mon userform de saisie, tout en haut dans ma liste déroulante, dès que je remet le lien par "decaler nbval" et que je renseigne le nom dans "rowsource", ça recommence à beuguer, je pense que le problème vient de là
 

job75

XLDnaute Barbatruc
Bonjour eric72,

Vous avez tout à fait raison, c'est la propriété RowSource qui créait le pataquès.

Il faut créer la liste de ComboBox4 avec cette macro dans l'UserForm du fichier joint :
VB:
Private Sub ComboBox4_Enter()
ComboBox4 = ""
ComboBox4.List = [BaseDeDonnees].Value
ComboBox4.DropDown 'déroule la liste
End Sub
A+
 

Pièces jointes

  • stock test(1).xlsm
    84.7 KB · Affichages: 5
Haut Bas