Formule conditionnelle et textbox
Résolu
johnshark
Messages postés
10
Statut
Membre
-
johnshark Messages postés 10 Statut Membre -
johnshark Messages postés 10 Statut Membre -
Bonjour,
je suis débutant en VBA et je souhaiterais créer une macro permettant :
- de rechercher sur quelle ligne la valeure de la cellule de la feuille active servant de référence (située en "B2") est située sur la feuille "obs1" (colonne 1),
- insérer la valeur de la textbox1 sur la ligne (forcément supérieure à 6) en question dans la feuille "obs1" (colonne 3).
Mon code actuel qui à priori n'a pas de problème mais qui n'effectue pas l'insertion de la valeur de la textbox est le suivant :
Un grand merci pour votre aide
je suis débutant en VBA et je souhaiterais créer une macro permettant :
- de rechercher sur quelle ligne la valeure de la cellule de la feuille active servant de référence (située en "B2") est située sur la feuille "obs1" (colonne 1),
- insérer la valeur de la textbox1 sur la ligne (forcément supérieure à 6) en question dans la feuille "obs1" (colonne 3).
Mon code actuel qui à priori n'a pas de problème mais qui n'effectue pas l'insertion de la valeur de la textbox est le suivant :
Dim i As Long
For i = 7 To n
If Sheets("obs1").Cells(i, 1).Text = ActiveSheet.Range("B2").Text Then
Sheets("obs1").Cells(i, 3).Value = ActiveSheet.Range("C3").Value
End If
Next i
End Sub
Un grand merci pour votre aide
Configuration: Windows Vista Internet Explorer 7.0
8 réponses
-
en supposant que textbox1 est le nom de ta Textbox
For Each cellule In Sheets("obs1").Range("A:A") If cellule.Columns(1).Text = ActiveSheet.Range("B2").Text Then cellule.Columns(3).Value = ActiveSheet.TextBox1.Text End If Next cellule -
Re,
ça ne fonctionne pas, le problème vient de cette ligne
cellule.Columns(3).Value = ActiveSheet.TextBox1.Text
erreur 438 : propriété ou méthode non gérée par cet objet.
Quand j'essaie de modifier la ligne et que je mets par exemple :cellule.Columns(3).Value = Me.TextBox1.Text
ça plante (ne répond pas)... mais ça marche au bout d'un certain temps.
Est-ce une des limites d'excel dans le cadre de la programmation ou ça n'a rien à voir?
Puis-je te demander pourquoi mon code n'allait pas ?
Merci en tout cas
-
sur quelle feuille est ta textbox ?
-
Si je ne me trompe pas elle n'est pas liée à proprement parlé à une feuille, elle découle d'un "menu" qui fait s'ouvrir la feuille où il faut vérifier la valeur.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Si le menu correspond à une fenêtre différente de celle de la feuille, c'est qu'il s'agit d'un Userform auquel la textbox appartient.
Ton code doit donc être placé dans un événement de ce Userform et il faut alors utiliser TextBox1.Text et non
ActiveSheet.TextBox1.Text -
J'ai utilisé :
cellule.Columns(3).Value = Me.TextBox1.Text
ça plante (ne répond pas)... mais ça marche au bout d'un certain temps.
Est-ce une des limites d'excel dans le cadre de la programmation ou ça n'a rien à voir?
Merci pour ton aide -
la boucle for explore toutes les lignes de la feuille, cela peut prendre un certain temps.
Sous Excel 2003, environ 65000 lignes,
Sous Excel 2007, plus d'1 million de lignes
cela est beaucoup plus rapide si l'on réduit l'exploration à des cellules ne contenant par exemple que des constantes, ou si on limite la plage à la dernière cellule renseignée
Set cellule_début = Sheets(obs1).Range("A1")
Set cellule_fin = Sheets(obs1).Range("A:A").End(xlDown) 'dernière cellule renseignée de la colonne A
For Each cellule In Range(cellule_début, cellule_fin)
next cellule -
D'accord, je vois un peu le problème...
Je vais donc diminuer la recherche.
Encore merci.
Voici mon code final :
For Each cellule In Sheets("obs1").Range("A7:A50") If cellule.Columns(1).Text = ActiveSheet.Range("B2").Text Then cellule.Columns(3).Value = Me.TextBox1.Text End If Next cellule End Sub