[EXCEL] Selection de cellule dans une colonne

Résolu
Bonjour,
J aimerais savoir comment je peux sélectionner automatiquement la cellule en dessous de celle mentionnée.

Plus simple par l exemple
je voudrais quelques chose comme

TextBox1.Value = Range("C6").Value
TextBox2.Value = Range(TextBox1.Value +1).Value


Range(TextBox1.Value +1)
doit indiquer automatiquement la cellule en dessous de C6 (ici C7)

Je sais bien que cela serais plus simple de mettre C7 mais c'est pour automatiser une série de code
j espère avoir été clair

merci d'avance

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,
    Pourquoi pas :
    ligne = 6
    TextBox1.Value = Cells (ligne,3).Value
    TextBox2.Value = Cells (ligne + 1,3).Value
    ?
    1. Contributeur
      Bonjour,

      ou bien (pour rester proche de la question mais la proposition de morgothal est très pertinente) :
      TextBox2.Value = Range(TextBox1.Value).offset(1,0).Value

      eric

      Jamais tu ne répondras à un mp non sollicité...
      Bon, ça c'est fait.
      1. merci Morgothal et ériiic pour vos réponses rapides

        Pour la lisibilité de mon code je préférerais la méthode de ériiic qui se rapproche de se que je voudrais (je reconnais que ce n'est peut être pas la meilleure façon de faire ^^)

        J'ai donc appliqué la méthode de ériiic mais j'obtiens une erreur '1004'
        "La méthode 'Range' de l'objet '_Global' a échoué"

        Auriez vous une solution svp ?
        merci
        1. Pour reprendre la formule d'Eric, il faudrait faire comme ceci :
          TextBox2.Value = Range("C6").offset(1,0).Value 


          Je n'ai pas moyens de tester...
      2. Voici un bout du code pour mon userform avec votre méthode (C6 deviens D3, j'ai fait quelques modifications)

        With Sheets("2012")
            If ComboBox2 = "36" Then
            TextBox1.Value = Range("D3").Value
            TextBox2.Value = Range("D3").Offset(1, 0).Value
            TextBox3.Value = Range("D3").Offset(2, 0).Value
            TextBox4.Value = Range("D3").Offset(3, 0).Value
            TextBox5.Value = Range("D3").Offset(4, 0).Value
            TextBox6.Value = Range("D3").Offset(5, 0).Value
            TextBox7.Value = Range("D3").Offset(6, 0).Value
        End If


        Ce code marche parfaitement

        l'inconveniant est que j'ai plusieurs autres valeurs pour mon combobox2 et qu'en appliquant cette méthode je dois beaucoup de valeur
        C'est pourquoi je prefererais plutot

            With Sheets("2012")
            If ComboBox2 = "36" Then
            TextBox1.Value = Range("D3").Value
            TextBox2.Value = Range(TextBox1.Value).Offset(1, 0).Value
            TextBox3.Value = Range(TextBox1.Value).Offset(2, 0).Value
            TextBox4.Value = Range(TextBox1.Value).Offset(3, 0).Value
            TextBox5.Value = Range(TextBox1.Value).Offset(4, 0).Value
            TextBox6.Value = Range(TextBox1.Value).Offset(5, 0).Value
            TextBox7.Value = Range(TextBox1.Value).Offset(6, 0).Value
            End If


        afin de ne changer qu'une valeur a chaque changement de nombre dans combobox2
        Mais ce code ne marche pas, on dirait qu'il n'identifie pas la valeur du textbox1
        1. TextBox1.Value = Range("D3").Value
          TextBox2.Value = Range(TextBox1.Value).Offset(1, 0).Value

          Range(TextBox1.Value) ne peut pas fonctionner, Range() attend une adresse de cellule (Range("A1") par exemple).
          Dans Range(TextBox1.Value) tu lui donne la valeur de TextBox1...

          C'est pour ça que plus haut j'avais mis
          TextBox2.Value = Range("C6").offset(1,0).Value 
      3. merci pour ta réponse Morghthal

        Je comprends
        Y aurait il une autre solution a mon problème ? Je me vois mal modifier pour chaque textbox la cellule. C'est pour cela que je cherchais quelques chose d'automatique ou je ne changerais qu'une valeur.
        1. Pourquoi pas ainsi ?

              With Sheets("2012")
              If ComboBox2 = "36" Then
              cellule = "D3"
              TextBox1.Value = Range(cellule).Value
              TextBox2.Value = Range(cellule).Offset(1, 0).Value
              TextBox3.Value = Range(cellule).Offset(2, 0).Value
              TextBox4.Value = Range(cellule).Offset(3, 0).Value
              TextBox5.Value = Range(cellule).Offset(4, 0).Value
              TextBox6.Value = Range(cellule).Offset(5, 0).Value
              TextBox7.Value = Range(cellule).Offset(6, 0).Value
              End If
      4. Oui, cela marche très bien :)

        Merci infiniment pour ta patience
        1. juste une derniere chose svp

              If ComboBox2 = "36" Then
              Dim cellule As String
              cellule = "D3"
              TextBox1.Value = Range(cellule).Value
              TextBox2.Value = Range(cellule).Offset(1, 0).Value
              TextBox3.Value = Range(cellule).Offset(2, 0).Value
              TextBox4.Value = Range(cellule).Offset(3, 0).Value
              TextBox5.Value = Range(cellule).Offset(4, 0).Value
              TextBox6.Value = Range(cellule).Offset(5, 0).Value
              TextBox7.Value = Range(cellule).Offset(6, 0).Value
              End If


          y a t il possibilité de mettre les declarations textbox sur une seule ligne afin de gagner de la place ?
          1. Gagner de la place ? Pourquoi faire ?
            Tu peux séparer les grandes lignes en plusieurs avec " _" mais je ne vois pas comment faire l'inverse ...