Sélectionner une plage variable

Bonjour à tout ceux qui passe sur ce post,

je suis novice sur vba mais pas en programmation, donc j'arrive pas mal à me débrouiller avec les aides de ce site.

Cependant, j'ai un problème pour sélectionner une plage variable... Je m'explique :

Dim nb_lignes As Integer

nb_lignes = WorksheetFunction.CountA(Range("B26:B300")) 'Fonction NBVAL

Range("B23").Value = nb_lignes

je veux sélectionner les cases de B26 jusqu'à B26+nb_lignes

Je n'ai pas trouvé la solution à mon problème.

Quelqu'un peut m'aider ?

Merci d'avance

David

Bonsoir

Sans connaitre comment sont organisées tes données : Il peut y avoir beaucoup de solutions

Une idée

Sub test()
Dim nb_lignes As Integer
  nb_lignes = WorksheetFunction.CountA(Range("B26:B300")) 'Fonction NBVAL
  Range("B23").Value = nb_lignes
  Range("B26:B" & 26 + Range("B23")).Select
 End Sub

Merci pour ta réponse Banzai ! Je savais même pas qu'on pouvait écrire ca de cette façon !

Je vais essayer de l'appliquer.

En fait ce que je veux faire, c'est une validation de la case B10 (par exemple) avec une liste (menu déroulant) à partir des données dans B26:B300, Sauf que je ne veux pas qu'il y apparaisse des "blancs". Donc je fait un tri du tableau B26:B300 pour que toutes les données se retrouvent en haut du tableau, j'utilise la fonction NBVAL pour savoir combien de données il y a et je cherche à sélectionner de la case B26 à B26+le nombre de données présentes.

Est-ce que je pourrais mettre Range("B26:B" & 26 + Range("B23")) dans

Range("B10").Select

With Selection.Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

xlBetween, Formula1:="=plage"

.IgnoreBlank = True

.InCellDropdown = True

.InputTitle = ""

.ErrorTitle = ""

.InputMessage = ""

.ErrorMessage = ""

.ShowInput = True

.ShowError = True

End With

Bon ça ne marche pas pour la validation... Quelqu'un connaitre peut-être une astuce ?

J'ai essayé avec ça :

Sub Création_menu_déroulant()

Dim nb_lignes As Integer

nb_lignes = WorksheetFunction.CountA(Range("B26:B300")) 'Fonction NBVAL

Range("B23").Value = nb_lignes

Dim plage As Range

Set plage = Range("B26:B" & 26 + Range("B23"))

Range("B11").Select

With Selection.Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

xlBetween, Formula1:="=plage"

.IgnoreBlank = True

.InCellDropdown = True

.InputTitle = ""

.ErrorTitle = ""

.InputMessage = ""

.ErrorMessage = ""

.ShowInput = True

.ShowError = True

End With

End Sub

Je suis sous office 97 pendant encore quelques semaines, bientôt sous office 2010, ça pourrait avoir un rapport ??

Bonjour

Quand tu marques du code dans tes messages utilises les balises Code (à gauche au dessus de la fenêtre de saisie)

Essaies

Sub Création_menu_déroulant()
Dim nb_lignes As Integer
  nb_lignes = WorksheetFunction.CountA(Range("B26:B300")) 'Fonction NBVAL
  Range("B23").Value = nb_lignes

Dim plage As Range
  Set plage = Range("B26:B" & 26 + Range("B23"))

  Range("B11").Select
  With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=" & plage.Address
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
  End With

End Sub

Ou cette version simplifiée

Sub Création_menu_déroulant_Simplifiee()
  With Range("B11").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=" & Range("B26:B" & Range("B" & Rows.Count).End(xlUp).Row).Address
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
  End With
End Sub

C'est parfait ! Ca marche très bien.

J'ai pas encore essayé la deuxième solution, mais au moins la première marche

Merci

Rechercher des sujets similaires à "selectionner plage variable"