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 :

Problème de suppression des données dans une feuille


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut Problème de suppression des données dans une feuille
    Bonjour,

    Je souhaite supprimer les valeurs contenues dans une feuille nommée "TRT".

    La macro est lancée depuis une feuille nommée 'PO'.

    J'ai codé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("TRT").Activate
     
       Cells.ClearContents
    L'activation de la macro. vide la feuille nommée 'PO'.

    Je ne comprends pas pourquoi.

  2. #2
    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 759
    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 759
    Points : 28 611
    Points
    28 611
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    L'activation de la macro. vide la feuille nommée 'PO'.
    Je ne comprends pas pourquoi.
    J'avoue ne pas comprendre non plus mais il est inutile de passer par la méthode Activate et de plus pour éviter un message d'erreur si le classeur actif ne contient pas de feuille nommée [TRT], il est préférable de préciser l'objet parent de la feuille comme par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thisworkbook.Worksheets("TRT").Cells.ClearContents
    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

  3. #3
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    Et avec juste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thisworkbook.Worksheets("TRT").Cells.Clear
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    Bonjour, Bonjour !

    Citation Envoyé par juju05 Voir le message
    L'activation de la macro. vide la feuille nommée 'PO'. Je ne comprends pas pourquoi.
    Le VBA ne se trompant jamais, c'est donc une erreur de conception (voir correction du post précédent)
    et je comprends très bien pourquoi surtout si le code n'est pas situé dans un module standard
    mais dans le module de la feuille PO ! …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    Si tu utilise juste Cells(x,y) il va faire référence à la feuille d'ou est lancé la macro.
    Donc si le code est dans la feuille PO, tu auras beau activer la feuille TRT, le code s'exécute quand même depuis PO donc vide ses cellules.

    Deux options : soit tu mets le code dans la feuille TRT et tu laisse tel quel et dans ce cas, ça supprimera effectivement bien les cellules de TRT, soit tu fais une référence à la feuille TRT plus absolue (voir mon post précédent).

    Faire un .Activate sur une feuille ne fait que la rendre active, donc modifiera le comportement pour tout ce qui est code du genre "activesheet", "activewindow", "selection" ... etc ... etc ...

    Tu as peu être confondu avec du code trouvé sur le net ou ils mettaient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    worksheet("toto").activate
    with activewindow
    .cells.clear
    end with
    Dans ce cas là, effectivement, ca supprimera bien les cellules de ta feuille active.
    La différence entre ce code et le tiens --> le "." qui précède Cells, et il fait toute la différence.
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

Discussions similaires

  1. [1.x] problème pour reprendre des données dans une DB
    Par phoelis1 dans le forum Symfony
    Réponses: 4
    Dernier message: 02/04/2008, 11h54
  2. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  3. [MySQL] Problème de récupération des données dans une fonction
    Par highman dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2006, 20h04
  4. Problème de lecture des cellules dans une feuille Excel
    Par wangjun dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/10/2006, 09h35
  5. [VB6]problème d'insertion des donneés dans une base d'Access2003
    Par lanbok dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/05/2006, 12h17

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