Formule conditionnelle et textbox

Résolu
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 :

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
A voir également:

8 réponses

thev Messages postés 2073 Date d'inscription   Statut Membre Dernière intervention   717
 
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
0
johnshark Messages postés 10 Statut Membre
 
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
0
thev Messages postés 2073 Date d'inscription   Statut Membre Dernière intervention   717
 
sur quelle feuille est ta textbox ?
0
johnshark Messages postés 10 Statut Membre
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thev Messages postés 2073 Date d'inscription   Statut Membre Dernière intervention   717
 
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
0
johnshark Messages postés 10 Statut Membre
 
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
0
thev Messages postés 2073 Date d'inscription   Statut Membre Dernière intervention   717
 
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
0
johnshark Messages postés 10 Statut Membre
 
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
0