Bonjour à toutes et à tous,
je suis à la recherche d'un moyen pour exprimer en chiffre les bornes d'une plage.
Actuellement, afin de définir une liste de validation "sélective" qui va piocher ses infos dans une feuille plutôt qu'une autre, je passe par .Add xlValidateList, Formula1:=f
avec f étant la fonction définie préalablement.
Telle que la liste de validation est contruite, je dois écrire par exemple f = "=Agricole!$A$2:$A$11", c’est-à-dire je dois de visu constater la borne basse de la plage (ici A11)
Comme mes listes sont vivantes et appelées sans cesse à changer, j'aimerais pouvoir automatiser le repérage de l'extrémité des plages
(sans compter que j'en ai beaucoup, le fichier joint étant ultra-simplifié)
Je sais que je pourrai insérer des lignes vides, à renseigner au fur et à mesure et ainsi définir au préalable une borne lointaine suffisante mais cela perturberait la lecture …
Avec quelque chose comme
lastline = Sheets("Agricole").Range("A" & Rows.Count).End(xlUp).Row
je sais le faire MAIS ma la liste de validation n'accepte pas de variable
donc je dois convertir la variable lastline en chiffre (concrètement faire en sorte que lastline soit remplacé par le chiffre 11)…
Quelqu'un sait-il comment transformer la variable lastline en chiffre ?
D'avance, merci pour vos lumières
je suis à la recherche d'un moyen pour exprimer en chiffre les bornes d'une plage.
Actuellement, afin de définir une liste de validation "sélective" qui va piocher ses infos dans une feuille plutôt qu'une autre, je passe par .Add xlValidateList, Formula1:=f
avec f étant la fonction définie préalablement.
Telle que la liste de validation est contruite, je dois écrire par exemple f = "=Agricole!$A$2:$A$11", c’est-à-dire je dois de visu constater la borne basse de la plage (ici A11)
Comme mes listes sont vivantes et appelées sans cesse à changer, j'aimerais pouvoir automatiser le repérage de l'extrémité des plages
(sans compter que j'en ai beaucoup, le fichier joint étant ultra-simplifié)
Je sais que je pourrai insérer des lignes vides, à renseigner au fur et à mesure et ainsi définir au préalable une borne lointaine suffisante mais cela perturberait la lecture …
Avec quelque chose comme
lastline = Sheets("Agricole").Range("A" & Rows.Count).End(xlUp).Row
je sais le faire MAIS ma la liste de validation n'accepte pas de variable
donc je dois convertir la variable lastline en chiffre (concrètement faire en sorte que lastline soit remplacé par le chiffre 11)…
Quelqu'un sait-il comment transformer la variable lastline en chiffre ?
D'avance, merci pour vos lumières
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim f As String
Dim SupportDansFeuilleSaisie As Range
Dim dernlign As Long
dernlign = Sheets("Saisie").Range("B" & Rows.Count).End(xlUp).Row
Set SupportDansFeuilleSaisie = Sheets("Saisie").Range("B2:B" & dernlign)
If Not Intersect(Target, SupportDansFeuilleSaisie) Is Nothing Then
For Each Target In SupportDansFeuilleSaisie
Select Case Target
Case "Divers"
f = "=Frais_généraux!$A$2:$A$4"
Case "Autre"
f = "=Frais_généraux!$A$2:$A$4"
Case "Produit"
f = "=Atelier!$A$2:$A$5"
Case Else
f = "=Agricole!$A$2:$A$14"
End Select
With Target(1, 2).Validation
.Delete
.Add xlValidateList, Formula1:=f
End With
Next Target
End If
End Sub