Probleme de constant plus constante et de recherche avec find

Fermé
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 - Modifié le 8 juin 2017 à 10:50
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 - 8 juin 2017 à 11:34
Bonjour,


Voici mon code


Private Sub cbValiderMandant_Click()
Dim CelMandat As Range
Dim CeLot As Range
Dim NomMandat As String
Dim plage As string

'Saisie des coordonnées
'CelMandat = ActiveCell.Address

NomMandat = Range("F" & ActiveCell.Row).Value
FinList = 10
DebList = 6
plage = "C" & DebList & ":C" & FinList

'Cherche adresse du lot
If tbLot1 <> 0 Then
'Cherche adresse du lot n° 1
Set CeLot = Range(plage).Find(tbLot1, "C" & (DebList - 1), LookIn:=xlValues, LookAt:=xlWhole)

Range("N3") = CeLot 'pr controle

If CeLot Is Nothing Then
MsgBox "Lot Inconnu 1"
Exit Sub 'sortie ou sélection manuelle
End If
'Copie du nom
Range("M" & CeLot.Row).Value = NomMandat
End If

If tbLot2 <> 0 Then
'Cherche adresse du lot n° 2
Set CeLot = Range("C" & DebList & ":C" & FinList).Find(tbLot2.Value, "C" & DebList, xlValues, xlWhole)
If CeLot Is Nothing Then
MsgBox "Lot Inconnu 2"
Exit Sub 'sortie ou sélection manuelle
End If
'Copie du nom
Range("M" & CeLot.Row).Value = NomMandat
End If

If tbLot3 <> 0 Then
'Cherche adresse du mandant du lot n° 3
Set CeLot = Range("C" & DebList & ":C" & FinList).Find(tbLot3.Value, "C" & DebList, xlValues, xlWhole)
If CeLot Is Nothing Then
MsgBox "Lot Inconnu 3"
Exit Sub 'sortie ou sélection manuelle
End If
'Copie du nom
'Range("M" & CeLot.Row).Value = NomMandat
End If

'NoEvents = True
tbLot1.Text = ""
tbLot2.Text = ""
tbLot3.Text = ""
'NoEvents = False
Exit Sub
End Sub


1er problème:
J'ai déclaré mes constantes debList et FinList dans "ThisWorbook" mais elles sont toujours vide lorsque je valide le bouton de commande (ValiderMandant) de mon formulaire. Alors je les ai redéclaré dans ma feuille mais rien ne change. c'est pourquoi je les déclare dans ma procédure. mais cela ne m'arrange pas du tout car j'en ai besoin dans tout mon classeur.

Alors comment dois-je faire svp?

2e problème: pourquoi le message d'erreur "erreur d'exécution 13" , pour la ligne en gras, svp?




Savoir dire NON est un devoir et une force! N'ayez pas peur! L'union fait la force!

Passez en résolu si ça l'est!
A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
8 juin 2017 à 10:46
Bonjour

Apparemment:
Set CeLot = Range(plage).Find(tbLot1, range("C" & (DebList - 1)), LookIn:=xlValues, LookAt:=xlWhole) 

--
 Michel
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
8 juin 2017 à 10:57
merci michel_m !
En effet je n'ai pas compris comment quelle était la cellule de début de recherche du find! Il ne fallait pas que je retire 1 en fait!

et pour mon problème de constante, une idée svp?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024
Modifié le 8 juin 2017 à 11:15
quelle était la cellule de début de recherche du find! Il ne fallait pas que je retire 1

Surtout pas!
la fonction Find ignore la 1° cellule en haut (et à gauche) d'une plage ou alors il faut utiliser Find next ce qui complique à mon avis...

tes constantes finlist et deblist doivent ^tre déclarées en "public" dans un module standard et non dans thisworkbook

tes variables (ou constantes ?) tblot... sont déclarées où et quelles sont leurs valeurs ?

mais j'ai l'impression que tu nous dis pas tout....
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
8 juin 2017 à 11:27
Pourtant j'ai retiré le +1 et mes valeurs sont trouvées.

"module standard" c'est celui de la feuille où j'opère ?!
j'ai déclaré finList en public et debList en const

Mes tbLot (1à3) sont des TextBox d'un formulaire de saisie
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
Modifié le 8 juin 2017 à 11:52
J'ai redéfini ma valeur FinList et maintenant ça marche:
FinList = Range("C" & DebList).End(xlDown).Row


mais ça plante si je mais le -1

donc je laisse!

Merci
0