Formule conditionnelle et textbox

Résolu
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
Configuration: Windows Vista Internet Explorer 7.0

8 réponses

  1. 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
    1. 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
      1. 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
        1. 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
          1. 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.
            1. 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
              1. 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