Affectation d'une variable à un objet Range

  • Initiateur de la discussion Initiateur de la discussion bcesoll
  • 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 !

B

bcesoll

Guest
bonjour,

je bloque dans une macro EXCEL sur l'affectation d'une variable à un objet Range.

En fait je veux que cet objet se modifie automatiquement en fonction de la macro.

mon code sheets(FEUILLE).range("VARIABLE")

quel code utiliser pour que RANGE face référence à cette VARIABLE.

MERCI
 
Re : Affectation d'une variable à un objet Range

bonjour,

Je te dirai ce que j'ai dit à mimi042 tout àl'heure:
bienvenu sur le forum.

tu dois comprendre que pour t'aider nous avons besoin d'un classeur exemple, que nous n'ayons pas à construire nous-même la situation.

As-tu bien lu la charte du forum?

A+ de te lire.

De plus si tu ne maîtrises pas bien VBA essaie d'exposer ton problème en langage ordinaire.

A+ de te lire
 
Re : Affectation d'une variable à un objet Range

Bonjour bcesoll

regarde le petit exemple ci-dessous si il peut t'aider, enfin si j'ai bien compris ta demande :

Code:
'definition de la variable
Dim c As Range
'initialisation de la variable
Set c = Sheets("Feuil1").Range("A1:A10")
'utilisation de la variable
c.Interior.ColorIndex = 3

bonne journée
@+

Edition : bonjour Hasco
 
Re : Affectation d'une variable à un objet Range

bonjour,

Est ce que tu peux être plus précis. Ton range, c'est une cellule, une plage de cellule ...
Idéalement c'est mieux de déposer son fichier ou le code de la macro pour qu'on puisse avoir l'ensemble des infos et te répondre au mieux

a+
 
Re : Affectation d'une variable à un objet Range

Salut,

exemples
Code:
  'appel avec aaa, une plage nommée de la feuille xxx
  Sheets("xxx").Range("aaa").Value = "n'importe quoi"
  MsgBox Sheets("xxx").Range("aaa").Address

 ' appel avec une variable de type String pour une adresse
   plage = "---:---"
   ...
  Sheets("xxx").Range(plage).Value = "ce que tu veux"
 
Re : Affectation d'une variable à un objet Range

voici un exemple dans le fichier excel.
je clique sur une cellule et en fonction de ce choix je masque une ligne.
ma macro bloque ligne 50, je ne sais pas effecter une variable (CHOIX_LIGNE issue du tableau, feuil2) à l'objet RANGE.
Le code Sheets("feuil1").Range(CHOIX_LIGNE).EntireRow.Hidden = False ne marche pas puisque'il doit y avoir des guillemets dans ma formule(").

Merci pour votre aide
 

Pièces jointes

Re : Affectation d'une variable à un objet Range

Bonjour,

bien que je ne comprenne pas le but de l'opération,

Il faut enlever les Chr(34) inutiles.

Cela fonctionne uniquement si l'on a cliqué sur une cellule contenant une valeur numérique représentant un numéro de ligne. Sinon la cellule nommée 'MONCHOIX' contient du texte ou autre chose et cela ne peux pas fonctionner. Pour cela il faut tester ActiveCell

Code:
If IsNumeric(ActiveCell) then
  If clng(ActiveCell) >1 and clng(ActiveCell) > à ceque tu veux then
     reste du code
 end if
end if
A+
 
Dernière modification par un modérateur:
Re : Affectation d'une variable à un objet Range

les lignes masquées à afficher sont nommées (UN, DEUX, TROIS, QUATRE....., DIX).

En cliquant sur un numéro (MONCHOIX) le tableau feuill2 donne automatiquement la ligne à afficher (CHOIX_LIGNE).

La variable CHOIX_LIGNE prend alors le nom de la ligne (UN, ...DIX)

Je veux affecter cette variable (CHOIX_LIGNE) à l'objet RANGE.

ex : si je clique sur le 1, je veux obtenir
sheets("feuil1").Range("UN").EntireRow.Hidden = False

je n'arrive pas à affecter le CHOIX_LIGNE à l'objet RANGE
 
Re : Affectation d'une variable à un objet Range

Bonjour le fil,
Vois pas vraiment la finalité mais bon...
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A1:A19")) Is Nothing And Target <> "" Then
    MONCHOIX = Target
    With Sheets("Feuil2")
        CHOIX_LIGNE = Application.VLookup(MONCHOIX, .Range("TABLEAU"), 2, False)
        .Range("NUMEROLIGNE") = CHOIX_LIGNE
        .Range("MONCHOIX") = MONCHOIX
    End With
    Range(CHOIX_LIGNE).Rows.Hidden = True
End If

End Sub
A+
kjin
 
Re : Affectation d'une variable à un objet Range

Re,

Excusez-moi d'insister mais il faut tester la valeur de Target car il y a des cellules entre A1:A19 qui sont vides----> erreur.

un test du genre:

Code:
 If IsNumeric(ActiveCell) Then
    If CLng(ActiveCell.Value) >= 1 And mCLng(ActiveCell.Value) <= 10 Then
            '....j'exécute le code
    End If
End If

A++
 
Re : Affectation d'une variable à un objet Range

merci à tous, 😉😉😉
j'arrive à affecter une variable à mon objet RANGE

Juste le code ligne 50 qui ne marche pas (m en trop) : If CLng(ActiveCell.Value) >= 1 And mCLng(ActiveCell.Value) <= 10

par contre ligne 60 la fonction target.Count ne passe pas !

............................................................................

Private Sub Worksheet_SelectionChange(ByVal cell As Range)

'10 sélectionner la cellule active'
MONCHOIX = ActiveCell

'20 reporter le choix sur la feuille 2'
Sheets("feuil2").Range("MONCHOIX") = MONCHOIX
Sheets("feuil2").Range("NUMEROLIGNE").FormulaR1C1 = "=VLOOKUP(MONCHOIX, TABLEAU,2,FALSE)"

'30 seléctionner la ligne en fonction du choix'
CHOIX_LIGNE = Application.VLookup(MONCHOIX, Sheets("feuil2").Range("TABLEAU"), 2, False)

'40 afficher la ligne choisie"
MsgBox (CHOIX_LIGNE)

'50 vérifier les cellules vides'
If IsNumeric(ActiveCell) Then

If CLng(ActiveCell.Value) >= 1 And mCLng(ActiveCell.Value) <= 10 Then
'....j'exécute le code
End If

'60 masquer la ligne choisie
If target.Count > 1 Then Exit Sub
If Not Intersect(target, Range("A1:A19")) Is Nothing And target <> "" Then

MONCHOIX = target

With Sheets("Feuil2")
.Range("NUMEROLIGNE") = CHOIX_LIGNE
.Range("MONCHOIX") = MONCHOIX
End With

Range(CHOIX_LIGNE).Rows.Hidden = False

End If

End Sub
 

Pièces jointes

Re : Affectation d'une variable à un objet Range

même en remplaçant par (Target.Cells.count) ça ne passe passe pas

le code (If Not Intersect(target, Range("A1:A19")) Is Nothing And target <> "") non plus.

pour info je suis en excel 2003
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
258
  • Question Question
Microsoft 365 Fonction SI
Réponses
23
Affichages
440
Retour