Erreur de fonction Find

Salut tout le monde,

J'ai un problème avec cette fonction :

Set columnEditedTemp = Rows("2").Find(What:=format(previousMonthDateFirstDay, "mmm-yy"), LookIn:=xlValues)

C'est très bizarre mais la fonction fonctionne () et puis sans changement dans le tableur, elle ne va plus fonctionner. Juste des fois pour coder le VBA j'utilise VS Code donc je fais des copier-coller mais c'est tout.

Set columnEditedTemp = Rows("2").Find(What:=format(previousMonthDateFirstDay, "mmm-yy"), LookIn:=xlValues)

If Not columnEditedTemp Is Nothing Then
        MsgBox columnEditedTemp.column
        columnEdited = columnEditedTemp.column
Else: displayError errorID:=""
End If

Merci

Bonjour,

.find est très chatouilleuse avec les dates.
C'est dû au fait que quand tu mets LookIn:=xlValues, tu crois qu'il regarde la valeur. Mais pas du tout, il regarde la propriété .Text qui est tributaire du format d'affichage. Tu as pris garde au format mais tu vois que des fois ça coince encore...
Avec .Formula il est sensé avoir la valeur, mais c'est encore scabreux dans certains cas.

Pour les dates je n'utilise plus que Match (Equiv() en fr). Ex :
colT = Application.Match(CLng(date1), shT.[2:2], 0) ' recherche colonne d'une date en ligne 2
Plus de prise de tête, ça fonctionne à tous les coups.
eric

Merci pour ta réponse.

J'ai juste une erreur :

capture d ecran 2021 09 08 a 11 58 45 capture d ecran 2021 09 08 a 11 58 58

bonjour,

sht. indique le nom de la feuille (variable qui n'a pas été initialisée), dans la logique de ton code (travail sur la feuille active), supprime simplement ces 4 caractères.

colT = Application.Match(CLng(previousMonthDateFirstDay), rows(2), 0) ' recherche colonne d'une date en ligne 2

Merci h2so4, mais j'ai un nouveau pb :

capture d ecran 2021 09 08 a 12 39 58

Je pense savoir pourquoi :

Public columnEdited As Integer

Sub setMonth()

...

columnEdited = Application.Match(CLng(previousMonthDateFirstDay), Rows(2), 0) ' recherche colonne d'une date en ligne 2

...
End Sub

C'est ça mon problème non (Pulic), si oui comment le résoudre sans enlever mon columnEdited en Public.

Merci

remplace integer par long

Public columnEdited As Long

Toujours la même erreur par contre si je relance la macro pendant que je suis en debug ça fonctionne

Bon j'ai finalement abandonnné les variables publique, donc tout fonctionne.

Merci !!!!

Rechercher des sujets similaires à "erreur fonction find"