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 :

Définir une Range dans une Range. [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut Définir une Range dans une Range.
    Bonjour à tous et merci de votre aide et de votre temps.

    J'ai un truc que je n'arrive pas à faire et je ne comprend pas où est mon erreur.

    Dans une feuille j'ai une zone nommée SourceDirectoryListdont l'adresse est B8:C11.
    J'aimerai accéder aux cellules B9:B11 (donc les n lignes moins la 1ère ligne la 1ère colonne) sans évidement préciser les adresses en dur.
    J'essaye donc de définir une range par rapport à ma range.

    Mon code actuel est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim area As Range
     
        Set area = Me.Range("SourceDirectoryList").Range( _
                            Me.Range("SourceDirectoryList").Cells(2, 1), _
                            Me.Range("SourceDirectoryList").Cells(Me.Range("SourceDirectoryList").Rows.Count, 1))
    et il me donne comme zone C16:C18.

    J'ai fait une recherche sur Google et je ne trouve que des exemples de range se référant à une feuille.

    Si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Set area = Me.Range( _
                            Me.Range("SourceDirectoryList").Cells(2, 1), _
                            Me.Range("SourceDirectoryList").Cells(Me.Range("SourceDirectoryList").Rows.Count, 1))
    Cela me donne la zone que je veux mais je ne comprend pas pourquoi je ne peux pas définir une range dans une range en précisant les cellules en haut à gauche et en bas à droite.

    Quelqu'un sait-il ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    sur la base de ton exemple (et donc en exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim rangetout As Range, rangedans As Range
      Set rangetout = Range("B8:C11")
      Set rangedans = rangetout.Offset(1).Resize(rangetout.Rows.Count - 1, rangetout.Columns.Count - 1)
      rangedans.Select
    EDIT : et il y aurait du plus rigolo à faire avec appication.intersect.

  3. #3
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Je limite le code écrit par paresse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim area As Range
        With Me.Range("SourceDirectoryList")
            Set area = .Cells(2, 1).Resize(.Rows.Count - 1, 1)
            area.Select
        End With

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Bonjour marot_r, unparia,

    Me.Range("SourceDirectoryList").Cells(2, 1) à pour adresse B9
    Me.Range("SourceDirectoryList").Cells(Me.Range("SourceDirectoryList").Rows.Count, 1)) a pour adresse B11

    Un range de ces deux range . select va sélectionner la plage B9:B11 (normal, c'est ce qu'on attend)

    Mais... , appliqué à Me.Range("SourceDirectoryList") on aura toujours cette plage B9:B11 mais non plus par rapport à la feuille, mais par rapport à la zone nommée SourceDirectoryList. donc avec un décalage de 1 colonne et 9 lignes.

    Bonne soirée

    EDIT : bonsoir anasecu

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Il est également possible de garder l'idée de départ de Marot. En en corrigeant toutefois l'écriture, selon ce principe/exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim rangetout As Range, rangedans As Range
      Set rangetout = Range("B8:C11")
      MsgBox Range(rangetout(2, 1), rangetout(rangetout.Rows.Count, 1)).Address

  6. #6
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Salut Jacques,

    tu es passé avant par 2 fois sur les exemples que je voulais donner
    Bon exemples , ma préférences allant sur le 2è ex.
    je l'avais écrit ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Exemple()
    Dim MyNewRange As Range
        With Range("SourceDirectoryList")
            Set MyNewRange = Range(.Cells(2, 1), .Cells(.Rows.Count, 1))
        End With
        MyNewRange.Select
        MsgBox MyNewRange.Address
    End Sub
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir à tous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Me.Range("SourceDirectoryList")
        .Range("A2").Resize(.Rows.Count - 1).Select
    End With

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

Discussions similaires

  1. Définir une plage avec des paramètres et l'objet RANGE
    Par Polygos dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/06/2017, 00h04
  2. [XL-2007] VBA: Définir une valeur par défaut pour un range d'activeX combobox
    Par redhotchilipeppers dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/07/2014, 20h22
  3. Réponses: 4
    Dernier message: 22/07/2014, 16h57
  4. [XL-2010] Définir une plage composée de range de différentes feuilles
    Par omarter dans le forum Excel
    Réponses: 6
    Dernier message: 21/01/2014, 11h32
  5. Réponses: 4
    Dernier message: 28/06/2012, 11h00

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