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 :

Effacer le contenu d'une cellule affichant "#DIV/0!"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    physico-chimiste
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : physico-chimiste

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Par défaut Effacer le contenu d'une cellule affichant "#DIV/0!"
    Bonjour,

    dans une colonne je veux effacer les valeurs négatives, j'ai donc écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Dim myRange As Range
    Dim cell As Range
    Set myRange = ActiveSheet.Range("F3:F" & dl)
     
    For Each cell In myRange
    If cell.Value <0 Then cell.Clear
    Next cell
    Sauf que dans cette colonne il existe des cellules dont le contenu est "#DIV/0!" que je voudrais effacer aussi. Comment effacer ces contenus sans que la boucle for each s'arrête sur la première cellule "#DIV/0!" générant à chaque fois une erreur "2007"?

    Merci d'avance pour votre aide,

    David

  2. #2
    Expert éminent
    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
    Par défaut



    Bonjour,

    contrôler la valeur de la cellule avec la fonction IsError par exemple …



    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

  3. #3
    Membre averti
    Homme Profil pro
    physico-chimiste
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : physico-chimiste

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Par défaut
    Bonjour,

    merci pour votre suggestion. En effet si j'écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each cell In myRange
    If IsError(cell.Value) Then cell.Clear
    Next cell
    ça m'efface le #DIV/0. Par contre si j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each cell In myRange
    If IsError(cell.Value) Or cell.Value<0 Then cell.Clear
    Next cell
    ça bug, alors j'ai écris les deux conditions dans 2 boucles différentes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For Each cell In myRange
    If IsError(cell.Value) Then cell.Clear
    Next cell
     
    For Each cell In myRange
    If cell.Value < 0 Then cell.Clear
    Next cell
    mais là ça plante aussi, "erreur 2007" il semblerait que le #DIV/0 situé en cellule G3 n'ait pas été effacé par la premire boucle(je parcours la plage de donnée "F3:G" & dl, avec dl un entier supérieur à 3))

  4. #4
    Expert éminent
    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
    Par défaut
    Aucun souci de mon côté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
             Dim Cel As Range
     
        For Each Cel In MyRange
            If IsError(Cel.Value) Then
                Cel.Clear
            ElseIf Cel.Value < 0 Then
                Cel.Clear
            End If
        Next
    _________________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    En une seule ligne et un seul comparateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each cell In myRange
        If InStr("#-", Left(Cell.Texte, 1)) <> 0 Then cell.Clear
    Next cell

  6. #6
    Expert éminent
    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
    Par défaut

    Sauf que la propriété .Texte n'existe pas !

    J'ai posté en académique le code précédent mais en une seule ligne aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            If IsError(Cel.Value) Then Cel.Clear Else If Cel.Value < 0 Then Cel.Clear

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Réflexe digital francophone => faute de frappe.

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

Discussions similaires

  1. [WD-2010] Effacer le contenu d'une cellule d'un tableau word
    Par totoro the big one dans le forum VBA Word
    Réponses: 2
    Dernier message: 17/03/2015, 20h27
  2. effacer le contenu d'une cellule
    Par tiyolx dans le forum Excel
    Réponses: 8
    Dernier message: 18/08/2008, 13h45
  3. Effacement du contenu d'une cellule sur Change ?
    Par marot_r dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/11/2007, 21h14
  4. Réponses: 3
    Dernier message: 27/01/2006, 18h35

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