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
A voir également:
- Formule conditionnelle et textbox
- Excel mise en forme conditionnelle formule - Guide
- Formule si et - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Excel liste déroulante conditionnelle - Guide
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
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 :
ç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
ç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
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
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é :
ç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
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
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