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 :

Méthode Delete Classe Range échoué [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 9
    Par défaut Méthode Delete Classe Range échoué
    Bonjour à tous,

    Je rencontre un problème avec le code Excel suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub Critere_rejet()
     
    Dim DerniereLigne As Long
    Dim i As Long
    DerniereLigne = Range("B" & Rows.Count).End(xlUp).Row 'On cherche le numéro de la dernière ligne
     
    For i = 5 To DerniereLigne
      While Cells(i, 12).Value > 0.9
            Cells(i, 12).EntireRow.Delete
        Wend
        Cells(1, 13).Value = (DerniereLigne)
        Cells(1, 12) = i
    Next i
     
    [L1:M1].ClearContents
     
    End Sub
    L'idée est de supprimer les lignes pour lesquelles la valeur est supérieur à 0,9. Ce programme fonctione très bien lorque je l'éxécute avec des tableaux qui font 1000 lignes. Dès que je l'utilise avec des tableaux qui font 5 000 ou 10 000 (j'aimerai aller jusqu'à 40 000) cela ne fonctionne pas et Excel me dit : "Erreur d'éxécution '1004' : La méthode Delete de la classe Range a échoué"

    J'ai déjà chercher sur internet mais je ne trouve rien de similaire (qui fonctionne pour certaines valeurs et pas d'autres)

    Merci d'avance pour votre aide !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = DerniereLigne To 5 step -1 
     if val(replace("" &  Cells(2, 12).Value,",",".")) > 0.9 then         Cells(i, 12).EntireRow.Delete
    
    end if
    Next i

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 9
    Par défaut
    Merci pour ta réponse rapide.

    J'ai tapé le code que tu m'as donné, je lance le programme, il balaie toute les lignes sans soucis mais il n'en supprime aucune. Je ne comprend pas le Step -1 et Val(Replace("" & Cells(2, 12).Value, ",", ".")).

    Peux-tu m'éclairer ?

    Merci !

  4. #4
    Invité
    Invité(e)
    Par défaut
    désolé, pour mes test javais remplacé i par 2!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if val(replace("" & Cells(i, 12).Value,",",".")) > 0.9 then Cells(i, 12).EntireRow.Delete

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 9
    Par défaut
    Je rencontre le même problème que tout à l'heure, mais avec tous les fichiers. C'est-à-dire que le code ne fonctionne pas même avec 500 ou 1000 lignes...

    Et lorsque je clique sur débogage, l'erreur est ici : Cells(i, 12).EntireRow.Delete.

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Explications pour le Step -1: https://www.developpez.net/forums/d1...e/#post9204035
    Le Replace sert à remplacer les virgules par des points. En effet, Excel (en français) utilise la virgule comme séparateur des décimales, alors que VBA (en anglais) utilise le pont. Donc si tu as écrit 0,9 dans ton classeur Excel, i lne le reconnaître pas comme étant égal à 0.9.
    Plutôt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, 12).EntireRow.Delete
    Tu peux peut-être essayer
    Plutôt que de faire une boucle pour trouver les valeurs > 0,9 et effacer les lignes correspondantes, tu ferais mieux d'utiliser les filtres automatiques, surtout si tu as un grand nombre de lignes --> Range.AutoFilter
    Tu filtres et tu supprimes les lignes résultantes du filtre, puis tu enlève le filtre.

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 9
    Par défaut
    J'ai réussi et ça fonctionne ! Merci beaucoup pour votre aide !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/01/2016, 12h52
  2. méthode select class range échoué
    Par PLH81 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/08/2014, 17h03
  3. Réponses: 11
    Dernier message: 09/07/2014, 16h40
  4. [XL-2010] Méthode Select de la classe Range échoué
    Par Identifiant_Anonyme dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/05/2014, 10h06
  5. [XL-2003] [VBA] Erreur 1004 - Delete Classe range
    Par mirmoleboss dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/07/2011, 16h53

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