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 :

Erreur VBA mais pas formule manuelle


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
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2019
    Messages : 14
    Par défaut Erreur VBA mais pas formule manuelle
    Bonjour à tous,

    Mon problème est le suivant : j'ai créé trois fonctions que voici qui me permettent de détecter la couleur d'une cellule, si elle est en gras et si elles soulignée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function couleur(Cible As Range) As Variant
    couleur = Cible.Font.ColorIndex
    End Function
     
    Public Function souligne(Cible As Range) As Variant
    souligne = Cible.Font.Underline
    End Function
     
    Public Function gras(Cible As Range) As Variant
    gras = Cible.Font.Bold
    End Function

    J'essaye d'utiliser ces fonctions dans ma macro dont voici une partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Range("D3").Select
     
     
         ActiveCell.FormulaR1C1 = _
            "=IF(RC[-1]<>"""",IF(OR(couleur(Intégration!RC[-3])>1,souligne(Intégration!RC[-3])=2,gras(Intégration!RC[-3]),gras(Intégration!RC[-3])=0),""X"",""""),"""")"
     
     
          Range("D3").Select
        Selection.AutoFill Destination:=Range("D3:D75"), Type:=xlFillDefault

    Ce qui me pose problème c'est que quand je passe par la macro, l'étape autofilldestination me donne une erreur #VALEUR! alors que quand je fais cette dernière étape à la main, je n'ai pas d'erreur.

    Quelqu'un aurait-il une suggestion ?

    Merci mille fois

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Dans votre formule, il y a 2 fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ,gras(Intégration!RC[-3])
    Vous pouvez aussi remplacer tous les codes par un code unique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function Cell(Cible As Range) As String
        If Cible <> "" Then
            If Cible.Font.ColorIndex > 1 Or Cible.Font.Underline = 2 Or Cible.Font.Bold = 0 Then Cell = "x" Else: Cell = ""
        Else: Cell = ""
        End If
    End Function
    La formule devient:
    Cdlt

  3. #3
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2019
    Messages : 14
    Par défaut
    Merci en effet il y avait deux gras qui trainaient, mais même en simplifiant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ActiveCell.FormulaR1C1 = _
          "=IF(RC[-1]<>"""",IF(OR(couleur(Intégration!RC[-3])>1,souligne(Intégration!RC[-3])=2,gras(Intégration!RC[-3])=TRUE),""X"",""""),"""")"
    J'ai toujours une erreur #VALEUR quand je passe par la macro qui n'apparaît pas quand je le fais manuellement. J'ai essayé votre formule, plus simple en effet mais elle me met une X dès que ma cellule contient du texte, même s'il n'est ni gras, ni souligné ni en rouge.

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    le fichier en exemple, allez sur la feuille "Intégratyion", modifiez les ces cellules, puis cliquez sur le bouton, le résultat dans la feuil1
    Pièce jointe 525834

    Le code de la macro et de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
        Sheets("Feuil1").Select
        Range("D3:D75").FormulaR1C1 = "=Cel(Intégration!RC[-3])"
    End Sub
     
    Function Cel(Cible As Range) As String
        If Cible <> "" Then
            If Cible.Font.ColorIndex > 1 Or Cible.Font.Underline = 2 Or Cible.Font.Bold = True Then Cel = "x" Else: Cel = ""
        Else: Cel = ""
        End If
    End Function
    Petit rappel: les évènements tels que changement de police, de soulignement, ou de type de caractères ne sont pas détecter par la VBA, il faut donc une action de votre part que cela soit pris en compte, donc à l'aide d'un bouton.

    Cdlt

  5. #5
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2019
    Messages : 14
    Par défaut
    Bonjour,

    Désolée pour le délai de réponse, congés obligent Merci énormément cela fonctionne avec votre fichier, mystère sur le mien mais l'essentiel c'est que cela fonctionne.

    Merci encore et bon réveillon !

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

Discussions similaires

  1. Démarrer une macro si ouvert via VBA mais pas manuellement.
    Par DPhBxl dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/08/2019, 07h20
  2. Bizarrerie réseau : erreur timeout mais pas via Fiddler
    Par Ceubex dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 10/06/2016, 12h27
  3. Fonction qui fonctionne sur VBA mais pas sur excel
    Par bol45 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/03/2014, 12h33
  4. Erreur 404, mais pas pour tous
    Par Ehplod dans le forum Performance Web
    Réponses: 0
    Dernier message: 28/04/2012, 13h27
  5. Réponses: 4
    Dernier message: 15/11/2010, 21h31

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