XL 2013 Comment exprimer en chiffre la valeur numérique recueillie par une variable ?

  • Initiateur de la discussion Initiateur de la discussion Sebast
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sebast

XLDnaute Impliqué
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




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
 

Pièces jointes

Re : Comment exprimer en chiffre la valeur numérique recueillie par une variable ?

Salut,

Si je comprend bien, tes listes peuvent s'allonger, mais ça marche parfaitement en mettant ta solution :
ex juste pour agricole.
Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim f As String
Dim lastline As Long
Dim SupportDansFeuilleSaisie As Range
Dim dernlign As Long

dernlign = Sheets("Saisie").Range("B" & Rows.Count).End(xlUp).Row
lastline = Sheets("Agricole").Range("A" & 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" & lastline
    End Select



With Target(1, 2).Validation
     .Delete
     .Add xlValidateList, Formula1:=f
End With

Next Target

End If

End Sub

@+
 
Re : Comment exprimer en chiffre la valeur numérique recueillie par une variable ?

Bonjour,


ceci semble fonctionner:

dim Last as Long
---ton code
Case "Divers"
'f = "=Frais_généraux!$A$2:$A$4"
Last = Sheets("frais_généraux").[A65000].End(xlUp).Row
f = "=Frais_généraux!$A$2:$A$" & Last

--- ton code

P.
 
Re : Comment exprimer en chiffre la valeur numérique recueillie par une variable ?

Bonjour David,
Salut Gosselien,

David : tu as raison, mon problème n’était que de syntaxe (je n’avais pas placé les guillemets où il fallait) …

Gosselien : idem
Je n’étais pas si loin, manifestement c’était chez moi un souci de syntaxe.


De plus, comme j’ai Excel 2013 (donc au-delà de 65 000 lignes) je pense que du coup on peut même écrire (même si c’est hautement improbable …) :

Last=sheets(« Frais_généraux »).range(« A » & rows.count).end(xlup).row
f = "=Frais_généraux!$A$2:$A$" & Last


Encore merci pour vos réponses rapides et efficaces. Sans votre aide, je serais resté sur mon constat d’échec !
 
Re : Comment exprimer en chiffre la valeur numérique recueillie par une variable ?

Bonjour

Tes listes sont des tableaux : il suffit de nommer la colonne et cela suivra automatiquement
Exemple le nom Rubrique associé à =Tableau2[Rubrique]
fera que tes listes déroulantes utilisant le nom Rubrique seront toujours à jour si tu ajoutes ou enlèves des éléments.

Si ta source était en aussi en tableau, les listes de validation se propageraient aussi sur les nouvelles lignes.
Il suffit donc de les définir sur la 1ère ligne avant la saisie ou sur les lignes déjà remplies : après cela marche tout seul...

Edit : coup de fil pendant ma réponse, du coup j'arrive après Gosselin et David que je salue, mais je ne comprends pas pourquoi faire du VBA là où on peut automatiser sans....
 
Dernière édition:
Re : Comment exprimer en chiffre la valeur numérique recueillie par une variable ?

Bonjour Chris,

merci pour ta précision.
Tu as raison, les tableaux présentent cet avantage ...
Cet exemple servira peut-être aux personnes ayant des versions sans liste/tableau.

Encore merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
94
Réponses
4
Affichages
1 K
Retour