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 :

Boucle if : "If Range("AG" & i).Value > 6 Then" ; incompatibilité de type


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur Génie Industriel
    Inscrit en
    Août 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur Génie Industriel

    Informations forums :
    Inscription : Août 2018
    Messages : 1
    Par défaut Boucle if : "If Range("AG" & i).Value > 6 Then" ; incompatibilité de type
    Bonjour à tous,

    Je suis débutant en VBA et rencontre un problème auquel je ne trouve aucunes réponses.
    J'ai réalisé une base de données contenant plusieurs macros afin d'ajouter des fichiers, naviguer etc.
    J'ai une macro qui réalise l'envoi d'un mail, cependant j'aimerai qu'elle s'active à l'enregistrement et sur condition.
    Plus précisément, j'ai une colonne dans laquelle je fais le calcul d'une moyenne, que je déroule sur 1000 ligne, et qui est formatée en pourcentage.
    J'aimerai que lorsque l'une de ces cellules est supérieure à 60% et que j'enregistre mon fichier excel, alors ma macro "envoi_mail" se lance.

    Voici le code :

    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
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
     
    SaveAsUI = False
    Cancel = True
    Application.EnableEvents = False
    ThisWorkbook.Save
    Application.EnableEvents = True
    DoEvents
     
    For i = 5 To 1000
     
        If Range("AG" & i).Value <> "" Then                        'erreur d'execution 13 ; incompatibilité de type
     
            If Range("AG" & i).Value > 6 Then                       'erreur d'execution 13 ; incompatibilité de type
                envoi_mail
            End If
        End If
    Next i
    End Sub

    Par avance, je vous remercie pour vos réponses et reste à votre disposition pour toutes informations supplémentaires !

    Ps : ne me demandez pas le fichier source, les données sont confidentielles...

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    ça c'est plutôt étrange !
    Comme tes valeurs sont numériques, tu peux modifier cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Range("AG" & i).Value <> "" Then
    en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Range("AG" & i).Value <> 0 Then
    mais ça ne va pas changer grand chose !
    Par contre, avec cette ligne de code, la condition ne sera jamais vrai car les pourcentages sont décimaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Range("AG" & I).Value > 6 Then
    donc plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Range("AG" & I).Value > 0.6 Then
    Fais un test avec ta boucle sur un classeur vierge pour voir si tu as encore des erreurs

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Utiliser dans un tel cas la propriété Text plutôt que Value de la cellule ne serait pas forcément une idée saugrenue

Discussions similaires

  1. [XL-2013] Incompatibilité de type dans boucle avec textbox
    Par clemence987 dans le forum Excel
    Réponses: 5
    Dernier message: 15/04/2015, 16h09
  2. [XL-2010] Fair une boucle sur des objets Ranges
    Par Escorpion dans le forum Excel
    Réponses: 6
    Dernier message: 18/03/2015, 18h14
  3. value d'input, simple quote affichage coupé
    Par xouzi dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 30/03/2012, 09h29
  4. Problème boucle Python "Out of Range"
    Par Aigaio dans le forum Général Python
    Réponses: 12
    Dernier message: 06/12/2011, 18h24

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