IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Range défini avec variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 61
    Par défaut Range défini avec variable
    Bonjour à tous,

    Je rencontre un problème dans la définition d'un Range dont la colonne est déterminée par une variable.

    Voici mon code qui pose problème, intégré dans une boucle qui incrémente NoCol2 et NoLig2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
         'Récupération de l'adresse de la cellule en NoCol2 de la Feuille 3
                    cellForValue = Worksheets("Feuil3").Cells(20, NoCol2).Address(RowAbsolute:=False, ColumnAbsolute:=False) 'testé et fonctionne
     
                   'récupération de la valeur de la cellule (une lettre est saisie dans la cellule concernée, "N" par exemple)
                   Dim rangeCell As String
                   rangeCell = Worksheets("Feuil3").Range(cellForValue).Value 'testé et fonctionne
     
                   'utilisation de la valeur de la cellule pour obtenir le Range à récupérer en Feuille 2
                   Dim rangeRecup As Range
                   rangeRecup = Worksheets("Feuil2").Range(rangeCell & NoLig2) 'Cette ligne est en erreur d'excécution 1004
    Je veux ensuite utiliser ma variable rangeRecup pour récupérer la valeur de la cellule concernée.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    valeurArecuperer = Worksheets("Feuil2").Range(rangeRecup).Value
    Auriez-vous une idée de ce qui bloque ?

    En vous remerciant par avance.

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Ifiii, bonjour le forum,

    J'ai pas bien compris ton speech mais plutôt que de définir une cellule par Range(adresse), utilise Cells(Ligne, Colonne). Tu définis une variable COL, tu l'initialises et tu l'utilises :
    Exemple : A5 vaut 12

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim COL As Interger
    DIM PL As Range
    COL = Range("A5").Value
    Set PL=Range(Cells(1, COL), Cells(10, COL+5)
    la plage PL est la plage L1:Q10...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 61
    Par défaut
    ma variable rangeCell contient obligatoirement une lettre, c'est pour ça que j'utilise Range et non pas Cells...

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu dois utiliser l’instruction Set pour associer une référence d’objet à la variable rangeRecup.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rangeRecup = Worksheets("Feuil2").Range(rangeCell & NoLig2)
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeurArecuperer = rangeRecup.Value
    Cordialement.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 61
    Par défaut
    J'ai la même erreur avec l'instruction Set.

    Je pense en revanche que le problème vient bien de la référence objet.

    Quand je force la référence ainsi par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rangeRecup = Worksheets("Feuil2").Range("N" & NoLig2)
    J'obtiens bien un résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set rangeRecup = Worksheets("Feuil2").Range(rangeCell & NoLig2)
    Là, j'ai de nouveau une erreur d'excécution 1004

  6. #6
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Re,

    Il me semble qu'il y a plus de lignes qu'il n'en faudrait :

    Si les variables NoCol2 et NoLig2 sont connues :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro1()
    Dim COL As String
    Dim PL As Range
     
    'NoCol2 = 10
    'NoLig2 = 4
    COL = Worksheets("Feuil3").Cells(20, NoCol2).Value
    Set PL = Worksheets("Feuil2").Cells(NoLig2, COL)
    PL.Select
    End Sub

    Mais bizarrement aucune lettre dans les variables...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Range avec Variable
    Par argal dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/07/2008, 10h39
  2. requete sql avec variable feuil-range
    Par jokenjo dans le forum Excel
    Réponses: 6
    Dernier message: 18/03/2008, 15h47
  3. vba range selection avec variable
    Par pierre.paumier dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/12/2007, 03h04
  4. vba range selection avec variable
    Par pierre.paumier dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2007, 23h35
  5. Réponses: 13
    Dernier message: 01/06/2006, 17h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo