VBA utiliser TextBox.Value ds un Cells.Find

Fermé
Antoine - 7 avril 2010 à 09:16
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 7 avril 2010 à 12:04
Bonjour à tous !

Je cherche à utiliser une valeur entrée dans le TextBox d'un Userform pour faire une recherche dans la feuille.
En gros ça devrait donner ça mais ça ne fonctionne pas ! :

Cells.Find(What:=TextBox2.Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)



Par ailleurs je cherche à utiliser aussi la valeur d'un TextBox dans un Cells(i,j).FormulaLocal,

par exemple :


Cells(DateRow, 1).FormulaLocal = "=SOMME(""A"" & TextBox1.Value:""A99"")

mais je ne sais pas comment le coder exactement !

Merci beaucoup pour votre aide











A voir également:

3 réponses

chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 308
7 avril 2010 à 09:35
Bonjour,

pour pouvoir chercher dans la feuille une cellule contenant la valeur de ta TextBox, il faut rajouter ".Activate à la fin de la recherche :

Cells.Find(What:=TextBox2.Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate


En ce qui concerne la somme, vu que le VBA est un langage anglais, peut être que tu devrais mettre "=SUM(...)"

Cordialement.
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 308
7 avril 2010 à 09:41
Oups, autant pour moi, je suis allé trop vite, le formulalocal permet de mettre =SOMME.
L'erreur vient donc d'autre part.
Cordialement.
0
Merci pour ta réponse, en fait je n'ai pas été assez complet dans ma question parce que j'utilise cette recherche dans la feuille pour mettre en mémoire un numéro de ligne, donc j'ai fait :


MaLigne = Cells.Find(What:=TextBox2.Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate.Row



Mais ça ne fonctionne pas !
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 308
Modifié par chossette9 le 7/04/2010 à 10:07
Bonjour,

tu ne peux pas le faire en une seule fois !

Tu dois d'abord faire ta recherche :
Cells.Find(...).Activate

et à la ligne d'en dessous, récupérer le numéro de ligne :
MaLigne=ActiveCell.Row
0
Thx ! J'ai fait ça mais j'ai cette erreure qui apparait sur la ligne du Cells.Find :

"Erreur d'exécution '424'
Objet requis "
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 7/04/2010 à 11:53
bonjour,

ton code marche si ton bout de macro est dans l'userform
par exemple ci dessous, la recherche est lancée par appui sur un bouton de l'userform
(je n'ai pas tenu compte de xlpart, excuse moi)

Private Sub CommandButton1_Click() 
'test = TextBox1 
On Error Resume Next 
laligne = Cells.Find(TextBox1, , xlValues).Row 
If Err.Number > 0 Then 
MsgBox "valeur inconnue" 
Else 
MsgBox "ligne: " & laligne 
End If 
End Sub


regarde cette petite démo:
https://www.cjoint.com/?ehlVkJW6eu

edit:
avec xlpart
laligne = Cells.Find(TextBox1, , xlValues, xlpart).Row
:-x
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
7 avril 2010 à 12:04
concernant le pb sur la somme, tuu pourrais laisser VBA faire le calcul puisque c'est ton code qui détermine la plage (attention texbox dans le code du formulaire)

Cells(DateRow, 1)=application.sum(range("A" & TextBox1.Value & ":A99") 
0