XL 2010 Validation des donées

M.D

XLDnaute Occasionnel
Bonjour à tous,
Un souci, dont je ne trouve pas la bonne procédure pour me décoince.
Lorsque je veux valider l’enregistrement de mes données j’ai un message d’erreur.

li = CLng(ll.Caption) + 1 'définit la ligne li

Sachant que la procédure utilisée a été déjà fait ses preuves avec succès dans un autre projet pour l’enregistrement des
Dans le cas présent, je ne comprends pas pourquoi ça ne fonctionne pas.
Voici la procédure utilisée

Private Sub CommandButton_Valider_Click() 'bouton "Valider / Modifier la fiche"
Dim r As Range 'déclare la variable r (Recherche)
Dim ctrl As Control 'déclare la variable ctrl (ConTRôLe)
li = CLng(ll.Caption) + 1 'définit la ligne li
If ComboBox2.Value = "" Then 'condition 1 : si la ComboBox2 "ComboBox2" n'est pas renseignée
MsgBox "Merci d'indiquer le nom de la plante." 'message
Me.ComboBox2.SetFocus 'place le curseur dans la textbox
Exit Sub 'sort de la procédure
Else 'sinon (condition 1)
'définit la recherche r (recherche la valeur de la textbox dans la colonne B de l'onglet "BD_ELEVE")
Set r = Sheets("BD_BESOIN").Columns(2).Find(Me.ComboBox2.Value, , xlValues, xlWhole)
If Not r Is Nothing Then 'condition 2 : si il existe au moins une occurrence trouvée
End If 'fin de la condition 2
End If 'fin de la condition 1
For Each ctrl In Me.Controls 'boucle sur tous les contrôles de l'UserForm
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
'si la propriété "Tag" du contrôle n'est pas vide, récupère la valeur du contrôle dans la cellule (ligne : li,
If ctrl.Tag <> "" Then Sheets("BD_BESOIN").Cells(li, CByte(ctrl.Tag)).Value = ctrl.Value
If Err <> 0 Then Err = 0 'si une erreur a été générée, annule l'erreur
On Error GoTo 0 'annule la gestion des erreurs
Next ctrl 'prochain contrôle de la boucle
Call Rens_Ctrl 'lance la procédure de renseignement des contrôles
MsgBox "Les données ont été correctement envoyées dans la base !" 'message de fin
End Sub
Y aurait-il un membre pour me donner un petit coup de pouce, je vous en remercie.
Je joins mon fichier
M.D
 

Pièces jointes

  • Production Printemps 2019-Chti16-bis.xlsm
    232.3 KB · Affichages: 20

M.D

XLDnaute Occasionnel
Re Bonjour,


Merci pour ce conseil. Je viens de corriger ma formule. Le message d’erreur est supprimé.

Malheureusement un nouveau souci est apparu.
A savoir que :
- Que la première validation d’enregistrement s’effectue sur la première ligne où se trouvent mes titres.
- Lors de la seconde validation d’enregistrement, elle efface et remplace la première validation.
Je ne vois pas pourquoi ce dysfonctionnement.
Pouvez de nouveau m’aider.
Merci d’avance
M.D
 

sousou

XLDnaute Barbatruc
bonjour
Sans avoir étudier tout ton code qui était censé fonctionner dans un autre projet,
essaie ceci en remplacement des lignes de code précités.

dl = Sheets("BD_besoin").Cells(Application.Rows.Count, 1).End(xlUp).Row
li = dl + 1 'définit la ligne li
C'est tout dépens de ce que tu veut faire avec ll
à la rigueur ajoute ll.caption=li
 

M.D

XLDnaute Occasionnel
Bonjour tous, le forum,

J'ai essayé, mais le résultat n'est pas concluant.
Les informations ne sont pas enregistrées dans ma base de données et je vois pas pourquoi ce dysfonctionnement.

Merci néanmoins de votre aide

M.D
 

M.D

XLDnaute Occasionnel
Re Bonsoir

Voici mon code utilisé

'============================================================================================
Private Sub CommandButton_Valider_Click() 'bouton "Valider / Modifier la fiche"
Dim r As Range 'déclare la variable r (Recherche)
Dim ctrl As Control 'déclare la variable ctrl (ConTRôLe)
If ll.Caption = "" Then ll.Caption = 0
li = CLng(ll.Caption) + 1 'définit la ligne li

If ComboBox2.Value = "" Then 'condition 1 : si la textbox "combobox2" n'est pas renseignée
MsgBox "Merci d'indiquer le nom de la plante." 'message
Me.ComboBox2.SetFocus 'place le curseur dans la textbox
Exit Sub 'sort de la procédure
Else 'sinon (condition 1)
'définit la recherche r (recherche la valeur de la textbox dans la colonne B de l'onglet "BD_besoin")
Set r = Sheets("BD_besoin").Columns(2).Find(ComboBox2.Value, , xlValues, xlWhole)
If Not r Is Nothing Then 'condition 2 : si il existe au moins une occurrence trouvée
'condition 3 : si "Oui au message
If MsgBox("Code déjà utilisé ! Si vous êtes sur une Nouvelle Fiche, veuiller le modifier." & Chr(13) _
& "Si vous modifiez une fiche existante, ce n'est pas nécessaire." & Chr(13) & Chr(13) _
& "Voulez-vous le modifier ?", vbYesNo, _
"combobox1") = vbYes Then
ComboBox1.SetFocus 'place le curseur dans la textbox
'sélectionne le texte de la textbox
Me.ComboBox2.SelStart = 0 'début de la sélection
Me.ComboBox2.SelLength = Len(Me.ComboBox2) 'longueur de la sélection
Exit Sub 'sort de la procédure
End If 'fin de la condition 3
End If 'fin de la condition 2
End If 'fin de la condition 1
For Each ctrl In Me.Controls 'boucle sur tous les contrôles de l'UserForm
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
'si la propriété "Tag" du contrôle n'est pas vide, récupère la valeur du contrôle dans la cellule (ligne : li,
'colonne : Tag du contrôle (converti en Byte)) de longlet "BD_ELEVE" (peut générer un erreur selon le type de contrôle)
If ctrl.Tag <> "" Then Sheets("BD_besoin").Cells(li, CByte(ctrl.Tag)).Value = ctrl.Value
If Err <> 0 Then Err = 0 'si une erreur a été générée, annule l'erreur
On Error GoTo 0 'annule la gestion des erreurs
Next ctrl 'prochain contrôle de la boucle
Call Rens_Ctrl 'lance la procédure de renseignement des contrôles
MsgBox "Les données ont été correctement envoyées dans la base !" 'message de fin

End Sub

Je joins également mon fichier

Merci d'avance
M.D
 

Pièces jointes

  • Production Printemps 2019-Chti16-bis.xlsm
    239.1 KB · Affichages: 13

Discussions similaires

Réponses
47
Affichages
2 K

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof