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 confirmé
    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
    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 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
    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 confirmé 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
    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 confirmé
    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
    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
    13 149
    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 : 13 149
    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()"
    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

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

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    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 confirmé
    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
    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