[Excel] Définir plage à partir de variables

Résolu
xjl -  
xjl Messages postés 232 Statut Membre -
Bonjour,

je cherche à définir une plage à partir de variable, c'est à dire faire qqchose du genre:

Range("Cells(a,b):Cells(c,d)")

Bien évidemment, cette syntaxe ne fonctionne pas...

Est-ce que quelqu'un saurait comment je peux faire svp ?

Merci d'avance
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. xjl Messages postés 232 Statut Membre 183
     
    Je précise un peu ma question:

    y1 = 500 + m
    y2 = 500 + m
    x1 = 2
    x2 = 2 + n

    For i = 0 To m
    If v = Cells(ligne + i, 1).Value Then

    With Cells(l, c + 1).Validation
    .Add xlValidateList, xlValidAlertStop, xlBetween, Cells(y1, x1), Cells(y2, x2)
    .InCellDropdown = True
    End With

    End If
    Next i

    J'ai essayé ça aussi, ça ne fonctionne pas...
    Comment pourrais-je faire svp ?
    0
    1. likum Messages postés 14 Statut Membre 3
       
      Salut!

      Pour accéder à des cellules il y a deux façon, soit
      celle que tu connais, soit celle que t'as essayé en te trompant
      un petit peu:

      Pour une plage c'est simple:
      Range(cells(row1,col1),cells(row2,col2)).select

      Tu peux alors sélectionner un morceau colonne, un morceau de ligne ou
      même un tableau

      VOilà.
      0
    2. xjl Messages postés 232 Statut Membre 183
       
      Merci Likum, mais ça ne fonctionne toujours pas, la ligne soulignée pose problème:

      With Cells(l, c + 1).Validation
      .Add xlValidateList, xlValidAlertStop, xlEqual, "=Range(Cells(y1, x1), Cells(y2, x2))"
      .InCellDropdown = True
      End With

      Faut-il xlEqual ou xlBetween, et surtout, comment faire référence correctement à la plage voulue dans ce cas précis ?

      Je désespère là... ;-)
      0
    3. xjl Messages postés 232 Statut Membre 183
       
      Ca non plus, ça ne marche pas:

      If v = Cells(ligne + i, 1).Value Then
      vaList = VBA.Array(Cells(y1, x1), Cells(y2, x2))
      With Cells(l, c + 1).Validation
      .Delete
      .Add xlValidateList, xlValidAlertStop, xlBetween, Formula1:=vaList
      .InCellDropdown = True
      End With
      End If
      0
    4. xjl Messages postés 232 Statut Membre 183
       
      Bonjour,

      pour ceux qui auraient encore un peu de mal à cerner le problème, voici un petit fichier pour mieux comprendre le but de la macro:

      https://www.cjoint.com/?dDi1e4CMjm

      Merci à tous pour vos efforts...
      0
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    si tu remplaces ton instruction :

    .Add xlValidateList, xlValidAlertStop, xlBetween, Formula1:=Range(Cells(y1, x1), Cells(y2, x2))

    par celle-ci, cela devrait fonctionner :

    .Add xlValidateList, xlValidAlertStop, xlBetween, Formula1:="=" & Chr(x1 + 64) & y1 & ":" & Chr(x2 + 64) & y2


    car "Formula1" attend une syntaxe du type "B25:D25"

    0
    1. xjl Messages postés 232 Statut Membre 183
       
      Merci beaucoup, ça marche impec ! :D
      0