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 :

[VBA-EXCEL] Gestion des erreurs et manipulation du contenu d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 28
    Points : 18
    Points
    18
    Par défaut [VBA-EXCEL] Gestion des erreurs et manipulation du contenu d'une cellule
    Allo à tous,

    J'ai un classeur dans lequel se trouve plusieurs feuilles remplies de libellés et formules.

    Au "repos" (avant que l'utilisateur n'ait entré les données initiales), tous les types d'erreurs peuvent apparaître dans certaines cellules (#DIV/0!, #N/A, etc.).

    Lorsque je cherche à lire systématiquement chaque feuille et chaque cellule pour savoir ce qu'elle contient (libellé de type texte ou formule) et y remplacer une chaîne de caractère donnée, si la cellule lue contenait une erreur, le code plante :

    ex d'une formule située en D12 qui renvoie #DIV/0! car $D10=0 :
    =Source/(2*RACINE($D10*ContactCutané*TC))
    Et dans laquelle on souhaite remplacer "TC" par "CA" mais pas le "tC" de "ContactCutané".
    (NB: Source, ContactCutané et TC sont des noms de champs)

    Comment intercepter ces erreurs et manipuler la chaîne de caractère initialement présente dans la cellule sous forme de formule pour y remplacer l'occurence de "sous"-chaine souhaitée par exemple ?

    Code permettant de lire et afficher systématiquement le contenu de chaque cellule :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub IdentifierCellulesAvecChaineDeCaractèresStipulée()
     
        Dim SearchChar, Texte_A_Afficher As String
        Dim Feuille As Worksheet
        Dim Cell As Range
        Dim i As Long
     
      ' Pour chacune des feuilles contenues dans un classeur,
      ' cherche les cellules connant la chaîne de caractères SearchChar
      ' avec respect de la casse et applique une couleur de fond jaune
      ' si elle les contient.
     
        SearchChar = "TC"
     
        For Each Feuille In Worksheets
            For Each Cell In Worksheets(Feuille.Name).UsedRange.Cells
     
                UserForm1.Show False
                Texte_A_Afficher=Cell.Value
                UserForm1.Label1 = Texte_A_Afficher
                DoEvents
     
            Next Cell
        Next Feuille
     
      ' Unload UserForm1
     
    End Sub
    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    Tu pourras adapter cet exemple pour identifier le type d'erreur dans la cellule :

    III-D-2. Identifier automatiquement l'apparition des erreurs dans la feuille de calcul


    bonne soirée
    michel

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Hi SilkyRoad

    J'ai toutefois opté pour une autre approche dans ce cas précis (puisqu'il s'agissait d'adapter des actions également en fonction du type de contenu d'une cellule donnée). Mon code ressemble à celà :

    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
    18
    Sub TypeContenuCellule()
       Dim TypeCell as String
     
       For Each Feuille In Worksheets
          For Each Cell In Worksheets(Feuille.Name).UsedRange.Cells
             If Application.IsText(Cell) Then
                     TypeCell = "Texte"
             ElseIf Cell.HasFormula Then
                     TypeCell = "Formule"
             ElseIf Application.IsErr(Cell) Then
                     TypeCell = "Erreur"
             ElseIf IsNumeric(Cell) Then
                     TypeCell = "Nombre"
             End If
          Next Cell
       Next Feuille
     
    End Sub
    Merci

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

Discussions similaires

  1. [XL-2010] Supprimer des lignes en fonction du contenu d'une cellule
    Par Ardiden31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/05/2015, 08h49
  2. [XL-2010] Macro pour manipuler le contenu d'une cellule
    Par h12enri dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/01/2013, 07h57
  3. Réponses: 4
    Dernier message: 13/09/2006, 16h53
  4. [VBA-E] Dysfonctionnement dans la gestion des erreurs
    Par Choco49 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/06/2006, 11h44
  5. [VBA-E] Pb sur gestion des erreurs
    Par micoscas dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 08/03/2005, 17h08

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