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 :

VBA Définir une zone


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Points : 56
    Points
    56
    Par défaut VBA Définir une zone
    Bonjour tout le monde,

    Je rencontre un petit soucis dans VBA. Je souhaite "définir" une zone, une plage de cellules. Mon objectif final est d'appliquer une formule à toutes les cellules de cette zone. Le process que je code actuellement:
    1) Mon utilisateur clique sur une cellule sur ma feuille 1. Il clique ensuite sur un bouton qui lance ma macro.

    2) Cette macro fait apparaitre un formulaire dans lequel l'utilisateur doit entrer un chiffre qui détermine la longueur (et donc largeur) de la matrice carrée qui correspond à la zone à définir. Ainsi si l'utilisateur clique en B2 (phase 1) ) et rentre 2 dans le formulaire qui apparait (phase 2) ), alors la zone que je souhaite définir est la zone allant de B2 à D4.

    3) Définition de la zone allant de B2 à D4 par mon code. Je nomme cette zone "area". Je souhaiterai l'appeler dans d'autres parties de mon programme futur si possible.

    4) Chaque cellule de cette zone "area" contient la formule = alea()

    5) Fin du programme.

    Le 1) et le 2) c'est bon. Je coince sur la suite. Auriez vous une idée de comment définir une plage de données dans la situation où je connais seulement le numéro de la ligne et colonne de départ et d'arrivée de ma zone ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Regarde l'aide sur Resize(x,y)

    Exemple B2:G4 peut s'ércire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B2").Resize(3,6)

    Pour tes 3 et 4

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B2").Resize(2,2).formula="=RAND()"

  3. #3
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Pour la désignation de la plage, tu peux regarder aussi la méthode InputBox d'Excel, type = 8.
    C'est assez agréable pour l'utilisateur.

    Cordialement,

    PGZ

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Regarde l'aide sur Resize(x,y)

    Exemple B2:G4 peut s'ércire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B2").Resize(3,6)

    Pour tes 3 et 4

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B2").Resize(2,2).formula="=RAND()"

    Bonjour, bonne année 2015 ^^

    Merci beaucoup pour votre aide ! Ca répond presque entièrement à mon problème. Là on met par défaut B2. Serait-il possible de remplacer B2 par la cellule sur laquelle l'utilisateur a cliqué ? Pour le resize, je vais essayer de l'adapter en remplaçant 2,2 par le chiffre entré par l'utilisateur.

    Pour le inputbox, je connaissais cette technique, cependant dans mon exercice, je dois demander à l'utilisateur d'entrer une taille dans mon formulaire (je ne dois pas lui demander de tracer la surface de jeu). Mais merci quand même car c'est vrai que c'est vraiment pratique et simple à utiliser.

  5. #5
    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 922
    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 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Serait-il possible de remplacer B2 par la cellule sur laquelle l'utilisateur a cliqué ?
    Utilise l'objet ActiveCell
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveCell.Resize(2, 2).Formula = "=RAND()"

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour et bonne année à tous,

    Accessoirement je ne suis pas sûr que nommer ta plage area soit une bonne idée. C'est un mot-clé de VBA, ça peut porter à confusion.
    eric

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Utilise l'objet ActiveCell
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveCell.Resize(2, 2).Formula = "=RAND()"

    Parfait merci !

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

Discussions similaires

  1. En VBA définir une zone d'impression
    Par maxval18 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/01/2013, 16h57
  2. [VBA] mettre une zone de texte en premier plan ?
    Par fellower dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/03/2007, 09h13
  3. Réponses: 3
    Dernier message: 09/04/2006, 09h10
  4. définir une zone d'impression sous Excel
    Par mirumoto dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/11/2005, 12h26
  5. [JTextArea ] Définir une zone de texte
    Par Katyucha dans le forum Composants
    Réponses: 8
    Dernier message: 17/11/2004, 23h32

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