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 :

Range depuis un module [XL-2007]


Sujet :

Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2015
    Messages : 80
    Points : 45
    Points
    45
    Par défaut Range depuis un module
    Bonjour à tous !

    J'ai créé une macro Excel contenu dans un module1, très basique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub Suppression()
    '
    ' Suppression Macro
    '
     
        ThisWorkbook.Sheets(2).Range("A7:XFD1048576").Select
        Selection.Clear
    End Sub
    Cette macro est appelé par un bouton se trouvant sur cette fameuse feuille 2.

    Maintenant j'essaye d'appeler cette macro depuis la feuille 1. Et là, ça ne fonctionne plus... ça me dit que la méthode Select de la classe Range a échoué.

    Comment je dois m'y prendre pour pouvoir appeler cette fonction de n'importe où ? (Entre autre je tente de l'appeler lors d'un changement sur la feuille 1)

    Merci de votre attention.

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Suppression()
    '
    ' Suppression Macro
    '
     
        ActiveSheet.Range("A7:XFD1048576").Clear
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2015
    Messages : 80
    Points : 45
    Points
    45
    Par défaut
    Merci de ta réponse,

    Néanmoins je ne veux pas supprimer sur la feuille active, mais je veux pouvoir supprimer le Range de la feuille 2 proposé plus haut depuis n'importe quelle autre feuille du classeur

    Avec ta technique je devrais surement faire un , puis empêcher le ScreenUpdating pour que l'utilisateur ne voit pas les changements de feuille, mais je trouve ça un peu lourd, je pense qu'il y a une solution plus simple non ? J'espère que c'est possible et que ça n'est qu'une simple erreur de syntaxe...

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Non, justement, ni de "Select" ni de "Activate"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Suppression()
    '
    ' Suppression Macro
    '
     
        Sheets("nom de la feuille concernée").Range("A7:XFD1048576").Clear
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour

    Passe donc la feuille à traiter en paramètre de ta procédure et utilise ce paramètre en lieu et place de ton worksheets(2)
    et dans la foulée, évite ce vilain select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ThisWorkbook.Sheets(2).Range("A7:XFD1048576").Select
        Selection.Clear
    agis directement, ainsi (Si ton paramètre feuille passé est F :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F.Range("A7:XFD1048576").ClearContents
    ou Clear, selon ce que tu veux faire en fait
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2015
    Messages : 80
    Points : 45
    Points
    45
    Par défaut
    Ah oui exact je n'avais pas vu ça comme ça, ça fonctionne ! Merci

  7. #7
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Tu peux directement faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(2).Range("A7:XFD1048576").Clear
    De cette manière, tu n'es pas obligé de passer sur la feuille pour effacer le contenu !

    Oups : trop tard
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2015
    Messages : 80
    Points : 45
    Points
    45
    Par défaut
    @unparia Merci de ta réponse, la feuille 2 étant constante j'ai adopté la méthode de @casefayere. Mais bonne idée je la note dans un coin !

    @jerome.vaussenat c'est comme ça que je m'y suis pris, merci !

  9. #9
    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 754
    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 754
    Points : 28 605
    Points
    28 605
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sauf quelques cas exceptionnel, en VBA les méthodes Select, Activate ainsi que l'objet Selection sont à proscrire.
    Cette ligne suffit pour effacer la plage de la feuille 2 du classeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Sheets(2).Range("A7:XFD1048576").Clear
    Je rajouterais que c'est tout de même dangereux d'utiliser le numéro d'indice de la feuille. En effet si l'utilisateur déplace ou insère une feuille avant la deuxième, celle-ci deviendra la troisième.
    Il est préférable d'utiliser le nom de la feuille et mieux encore son CodeName

    [EDIT]
    Désolé Jérôme, au moment de rédiger ma réponse, la tienne n'était pas encore visible et je n'avais pas lu non plus la réponse de Dominique
    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

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2015
    Messages : 80
    Points : 45
    Points
    45
    Par défaut
    Merci Philippe, dans le cas de mon développement aucune feuille ne viendra à être ajouté, les utilisateurs ne rentreront que des données sur la feuille 1 et n'auront pas accès à la deux, ils cliqueront simplement sur un bouton. Le codeName est inchangeable ? Car dans le cas du nom de la feuille c'est comme pour l'indice, si il la renomme le code ne fonctionnera plus...

  11. #11
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Il est préférable d'utiliser le nom de la feuille
    c'est bien ce que j'ai proposé
    et mieux encore son CodeName
    entièrement d'accord
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  12. #12
    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 754
    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 754
    Points : 28 605
    Points
    28 605
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Justement la propriété CodeName d'une feuille est un nom visible dans la fenêtre des propriétés de la feuille.
    Si l'utilisateur renomme la feuille, le CodeName reste inchangé

    Nom : CodeName Property.png
Affichages : 211
Taille : 50,5 Ko
    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

  13. #13
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, et si cela ne suffisait pas il y a aussi ceci..... bis repetita placent

  14. #14
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2015
    Messages : 80
    Points : 45
    Points
    45
    Par défaut
    Merci beaucoup pour vos réponses !

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

Discussions similaires

  1. rediriger vers un form depuis un module en vb.net
    Par lucaazori1988 dans le forum VB.NET
    Réponses: 1
    Dernier message: 10/08/2010, 17h19
  2. [AC-2007] Effectuer action d'un bouton depuis un module
    Par moltes dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/12/2009, 00h40
  3. [E-03] modifier un range dans un module
    Par benneb dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 19/01/2009, 10h55
  4. Acces aux controles d'un form depuis en module
    Par tomkich dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/02/2007, 17h18
  5. [VB.NET] Accéder au formulaire principal depuis un module
    Par smedini dans le forum Windows Forms
    Réponses: 8
    Dernier message: 02/02/2006, 14h33

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