[EXCEL] Selection de cellule dans une colonne

Résolu
ced3c Messages postés 240 Statut Membre -  
ced3c Messages postés 240 Statut Membre -
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

  1. Morgothal Messages postés 1350 Statut Membre 184
     
    Bonjour,
    Pourquoi pas :
    ligne = 6
    TextBox1.Value = Cells (ligne,3).Value
    TextBox2.Value = Cells (ligne + 1,3).Value
    ?
    0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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.
    0
  3. ced3c Messages postés 240 Statut Membre 5
     
    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
    0
    1. Morgothal Messages postés 1350 Statut Membre 184
       
      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...
      0
  4. ced3c Messages postés 240 Statut Membre 5
     
    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
    0
    1. Morgothal Messages postés 1350 Statut Membre 184
       
      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 
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ced3c Messages postés 240 Statut Membre 5
     
    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.
    0
    1. Morgothal Messages postés 1350 Statut Membre 184
       
      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
      0
  7. ced3c Messages postés 240 Statut Membre 5
     
    Oui, cela marche très bien :)

    Merci infiniment pour ta patience
    0
  8. ced3c Messages postés 240 Statut Membre 5
     
    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 ?
    0
    1. Morgothal Messages postés 1350 Statut Membre 184
       
      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 ...
      0
  9. ced3c Messages postés 240 Statut Membre 5
     
    ca ira ^^

    Merci beaucoup en tout cas :)
    0