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

Excel Discussion :

Fair une boucle sur des objets Ranges [XL-2010]


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    mathematiques financieres
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : mathematiques financieres
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Fair une boucle sur des objets Ranges
    Bonjour,

    J'aimerais manipuler plusieurs objets de type Range afin d'y realiser des modifications de Format, ces dernieres sont les memes pour tous mes Range

    J'ai pense creer un vecteur de type range, et de recuperer la bonne plage a chaque tour de boucle via .Select, ce qui donne : (je prends simplement un vecteur de dimension 2 pour l'exemple)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim vector_range() As Range
    ReDim vector_range(2)
     
    vector_range = Array(Range(Cells(2, 1), Cells(2, 16)), Range(Cells(2, 1), Cells(last_row, 16)))
      'last_row est une variable definie auparavant
     Dim i As Integer
     
     
    For i = 1 To 2
    vector_range(i).Select
    'CODE manipulation sur la selection
     
    next i

    Le code marche parfaitement pour une plage, mais ma boucle ne semble pas fonctionner
    J'en deduis que le vecteur vector_range ne lui plait pas
    Avez vous une idee ?

    Merci,
    Escorpion

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    A quoi est égal le contenu de last_row ? Si cette variable contient la valeur 2, il est normal que tu ais l'impression (fausse) que ta boucle ne marche pas puisque les deux éléments range de ton vecteurs contiendraient la même chose.

    Voici une version plus simple de ton code. Ca t'aidera peut-être à mieux comprendre l'explication ci dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim vector_range(2) As Range
    Dim i As Integer
     
    vector_range(1) = Range(Cells(2,1),Cells(2,16))
    vector_range(2) = Range(Cells(2,1),Cells(last_row,16))
     
    For i = 1 To 2
     
       vector_range(i).Select
     
    next i
    De plus, un Select est rarement une bonne solution.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Candidat au Club
    Homme Profil pro
    mathematiques financieres
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : mathematiques financieres
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    last_row est un entier superieur strictement a 22, qui varie selon les cas.
    pour faire simple, j'ai en fait cree une nouvelle sheet, sheet2, a partir des donnees de sheet1 dans laquelle l'utilisateur peut manuellement modifier et ajouter de nouvelles donnees, donc de nouvelles cellules.
    C'est pourquoi ce last_row est une variable

    merci pour ta reponse, j'avais deja tente cette solution, mais cela n'a pas fonctionne non plus.

    Je ne suis pas fan des Select, seulement j'arrive a la fin d'un long programme de code, et je dois appliquer un "design" specifique a ma feuille de calcul. J'ai donc enregistre des macros pour les differents format, couleurs, fusion de cellule, autofit afin de gagner du temps.

    Je finirai pas trouver le problem

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La variable dimensionnée vector_range étant une variable objet (de type Range), pour lui affecter une valeur, il faut faire précéder par le mot clé Set
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Set vector_range(1) = Range(Cells(2, 1), Cells(2, 16))
     Set vector_range(2) = Range(Cells(2, 1), Cells(Last_Row, 16))
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Candidat au Club
    Homme Profil pro
    mathematiques financieres
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : mathematiques financieres
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Super ! Avec le set cela fonctionne parfaitement, bravo, c'est bon a savoir

    Merci a tous les deux,

    Bonne fin de journee,

    Escorpion

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    La variable dimensionnée vector_range étant une variable objet (de type Range), pour lui affecter une valeur, il faut faire précéder par le mot clé Set
    Parfois on cherche trop compliqué et on passe à côté des trucs gros comme une maison...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour Menhir,
    Exact.
    Je ne l'ai pas vu du premier coup.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Faire une boucle sur des OptionButton d'une feuille dans une userform
    Par Marty57070 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/06/2015, 07h23
  2. Boucle sur des objets d'une feuille
    Par BERRACHED SAID dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 09/07/2013, 09h54
  3. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  4. Faire une boucle sur des labels ou textBox
    Par Actarusdu60 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/12/2008, 18h17
  5. Faire une boucle avec des variables vides ?
    Par byloute dans le forum Linux
    Réponses: 5
    Dernier message: 23/02/2006, 09h33

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