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 :

Suppression d'une ligne en VBA [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Points : 16
    Points
    16
    Par défaut Suppression d'une ligne en VBA
    Bonjour à tous,
    je souhaite supprimer une ligne d'une feuille avec le code suivant qui est sur un formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("TableauProvisoire").Rows(Indice.Value & ":" & Indice.Value).Select
    Selection.Delete Shift:=xlUp
    Ma feuillle "TableauProvisoire" existe bien et Indice.Value est la valeur d'un champ de texte présent sur mon formulaire.
    J'ai adapté ce code en le copiant/collant à partir d'une macro.
    J'ai le message d'erreur suivant :

    'Erreur d'execution 1004'
    La méthode Select de la classe Range a échoué

    Débutant en VBA, j'ai du mal à comprendre ce qui ne va pas...

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bonjour,

    les "Select", "Activate", "Selection" sont as proscrire des codes VBA...


    as-tu placé la ligne :
    en haut de tous tes modules de codes ?

    vérifie la valeur de ton Indice.Value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MsgBox Indice.value
    Worksheets("TableauProvisoire").Rows(Indice.Value ).Delete Shift:=xlUp

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Points : 16
    Points
    16
    Par défaut
    Merci bbil pour ta réponse

    IL manquait sur 2 ou 3 module un
    Je les ai rajouté.

    renvoie bien une valeur.
    Quand je code en "dur" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("TableauProvisoire").Rows("9:9").Select
    cela ne fonctionne toujours pas, avec le même message d'erreur.

    Par contre quand je place, avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("TableauProvisoire").Activate
    là ça marche....

    J'ai un peu bidouiller dans mes feuilles : suppression de quelques une et copier/coller d'une feuille d'un autre classeur. Mais je n'ai pas touché à celle appelée dans mon code qui ne marche pas. Se pourrait-il que mes feuilles soient mal indexée ? Y a-t-il une autre méthode pour cibler une feuille ?

  4. #4
    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
    Bonjour

    As tu testé le code fourni par Bbil?

    As tu lu la remarque de Bbil?
    les "Select", "Activate", "Selection" sont as proscrire des codes VBA...
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Une explication complémentaire pour t’aider à comprendre pourquoi ça ne fonctionne pas.
    Lorsque tu utilises la méthode Select sur une plage, tu dois savoir qu’elle agit sur la feuille active.
    Tu dois donc décomposer le traitement en 3 temps
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("TableauProvisoire").Activate ‘Activation de la feuille
    ActiveSheet. Rows(Indice.Value).Select ‘Sélection de la plage
    Selection.Delete Shift:=xlUp ‘Action sur la plage sélectionnée
    Si tu lances ta procédure alors que la feuille active n’est pas "TableauProvisoire", tu obtiens l’erreur d'exécution 1004.

    L’autre méthode, plus rationnelle, consiste à effectuer autant que possible le traitement attendu (suppression d’une plage dans ton cas) sans utiliser la méthode Select.
    C’est la méthode préconisée par bbil.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("TableauProvisoire").Rows(Indice.Value ).Delete Shift:=xlUp
    Cordialement.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Points : 16
    Points
    16
    Par défaut
    j'ai lu trop vite la réponse de bbil ! je me suis arrêté à la ligne msgbox... et effectivement le code marche.
    J'avais lu les mises en garde sur Activate, mais je voulais comprendre pourquoi cela marchait avec....

    Merci pour vos remarques et explications très réactives !

    Bien cordialement.

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

Discussions similaires

  1. suppression d'une ligne dans un fichier XML EN VBA
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 10/07/2008, 16h00
  2. Réponses: 3
    Dernier message: 19/09/2005, 13h20
  3. [Debutant][JTable] Suppression d'une ligne
    Par seiryujay dans le forum Composants
    Réponses: 7
    Dernier message: 03/08/2005, 17h15
  4. [JTable] problème après suppression d'une ligne
    Par fredo3500 dans le forum Composants
    Réponses: 7
    Dernier message: 17/03/2005, 10h01
  5. Réponses: 6
    Dernier message: 04/03/2004, 09h35

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