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 :

problème de condition avec cellule contenant une formule [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut problème de condition avec cellule contenant une formule
    Bonjour à tous,

    Je bute depuis un moment sur une simple condition. J'ai bien fouiné sur le net sans trouver le truc qui fonctionne.
    Je dois récupérer dans des variables les valeurs de cellules contenant des formules du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SI(SOMME.SI.ENS($R$7:$R$43;$S$7:$S$43;G49;$T$7:$T$43;$T$5)=0;"";SOMME.SI.ENS($R$7:$R$43;$S$7:$S$43;G49;$T$7:$T$43;$T$5))
    avec le code suivant tout se passe bien tant que la formule donne un résultat

    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
    29
    30
     
    With Sheets("Feuil1")
     
                     T = .Cells(i, 2).Text
                     If .Cells(i, 8).Text <> "" Then
                     PI = .Cells(i, 8)
                     End If
                     If .Cells(i, 10).Text <> "" Then
                     PE = 0
                    PE = CDbl(.Cells(i, 9).Value)
     
                     End If
                     If .Cells(i, 10).Text <> "" Then
                     F = .Cells(i, 10)
                     End If
                     If .Cells(i, 11).Text <> "" Then
                     MI = .Cells(i, 11)
                     End If
                     If .Cells(i, 12).Text <> "" Then
                     ML = .Cells(i, 12)
                     End If
                     If .Cells(i, 4).Text <> "" Then
                     PV = .Cells(i, 4)
                     End If
                     If .Cells(i, 5).Text <> "" Then
                     QE = .Cells(i, 5)
     
                     End If
     
              End With
    J'ai aussi essayer de remplacer les <> "" par des >0 mais rien n'y fait VBA considère qu'il y a toujours un résultat dans la cellule, donc ignore ma condition et plante à l'incrémentation de la variable qui ne trouve rien dans la cellule

    merci pour votre aide car les posts que j'ai trouvé ne me sont pas d'une grande utilité

    cordialement

  2. #2
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    décidément je m’angoisse trop vite voilà la solution si ça peu servir à un autre étourdie de mon genre

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     For i = 49 To 66
     
            If Sheets("Feuil1").Cells(i, 2) = "" Then
            GoTo sortie
            Else
     
            With Sheets("Feuil1")
     
                     T = .Cells(i, 2).Text
     
                     If .Cells(i, 8).Value <> "" Then
                     PI = .Cells(i, 8)
                     End If
     
                     If .Cells(i, 10).Value <> "" Then
                    PE = CDbl(.Cells(i, 9).Value)
                     End If
     
                     If .Cells(i, 10).Value <> "" Then
                     F = .Cells(i, 10)
                     End If
     
                     If .Cells(i, 11).Value <> "" Then
                     MI = .Cells(i, 11)
                     End If
     
                     If .Cells(i, 12).Value <> "" Then
                     ML = .Cells(i, 12)
                     End If
     
                     If .Cells(i, 4).Value <> "" Then
                     PV = .Cells(i, 4)
                     End If
     
                     If .Cells(i, 5).Value <> "" Then
                     QE = .Cells(i, 5)
     
                     End If
     
              End With
     If T <> "" Then
    je croyais pourtant avoir essayer les .value mais c'était avec >0 et là ça ne fonctionnait pas

    A+ le forum

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonjour,

    Une autre piste qui peut simplifier le fichier.
    Visiblement le but de la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(SOMME.SI.ENS($R$7:$R$43;$S$7:$S$43;G49;$T$7:$T$43;$T$5)=0;"";SOMME.SI.ENS($R$7:$R$43;$S$7:$S$43;G49;$T$7:$T$43;$T$5))
    est de ne pas afficher la valeur 0.

    Excel dispose d'une option de configuration pour masquer les 0 :
    - pour tout le fichier, tu peux utiliser décocher l'option Afficher une zéro dans les cellules qui ont une valeur nulle.

    - pour une ou plusieurs cellules tu peux utiliser le format personnalisé
    Format->Nombre->Personnalisé 0;-0;;@.
    - si ce n'est pas possible tu peux utiliser la mise en forme conditionnelle (pour mettre une police blanche lorsque la valeur de la cellule vaut 0).

  4. #4
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    Merci pour le conseil mais par exemple si mes recettes - mes dépense = 0 alors j'ai besoin du zéro c'est pour ça que j'ai un peu compliquer
    au fait j'ai presque reconstruit tout mon fichier et même peu être mieux que la première fois...

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dans ce cas, il y a deux autres solutions.
    Soit utiliser la mise en forme conditionnelle sur certaines cellules ou plages de cellules où l'on attribue aux cellules ayant une valeur nulle une fonte de couleur blanche.
    Autre solution, toujours aux cellules concernées. Un format personnalisé 0;-0;"" ou 0;(-0);"" si tu souhaites mettre entre parenthèses les nombres négatifs.

  6. #6
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    oui je vois que j'ai l'esprit compliqué et qu'il y a plus simple, mais comme on dit pourquoi faire simple quand on peu faire compliquer

    Avant de me lancer en vba je faisais des formules sur lesquelles je passais parfois une journée entière avant qu'elle fonctionne et j'ai sans doute gardé un certain goût pour les formules compliquées
    un petit exemple mais pas le pire, je n'arrive pas à retrouver le fichier mais j'avais une formules qui faisait une page toute entière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SI(OU(B5="";C5="";G4="";I4="";M4="";M4="Pente ?";M4="Rayon = ?";M4="Supprimer le Rayon");"";SI(ET(J5>0;OU(F5="";F5="Pente";F5="Rampe"));"Supprimer le Rayon";SI(ET(F5="Pente";H5="";OU(G5="Pente + parabole +";G5="Pente + parabole -";G5="Rampe + parabole +";G5="Rampe + parabole -"));"Pente ?";SI(ET(F5="Rampe";H5="";OU(F5="Pente + parabole +";G5="Pente + parabole -";G5="Rampe + parabole +";G5="Rampe + parabole -"));"Pente ?";SI(ET(J5="";OU(F5="Rampe + parabole +";F5="Rampe + parabole -";F5="Pente + parabole +";F5="Pente + parabole -"));"Rayon = ?";SI(G5="Pente";M4-(C5*I5);SI(G5="Rampe";M4+(C5*I5);SI(G5="Rampe + parabole +";L5+(D5*I4)+(D5^2/(2*K5));SI(G5="Rampe + parabole -";L5+(D5*I4)-(D5^2/(2*K5));SI(G5="Pente + parabole +";L5-(D5*I4)+(D5^2/(2*K5));SI(G5="Pente + parabole -";L5-(D5*I4)-(D5^2/(2*K5)))))))))))))
    Il va falloir que je pense sérieusement à simplifier...

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avant de me lancer en vba je faisais des formules sur lesquelles je passais parfois une journée entière avant qu'elle fonctionne et j'ai sans doute gardé un certain goût pour les formules compliquées
    un petit exemple mais pas le pire, je n'arrive pas à retrouver le fichier mais j'avais une formules qui faisait une page toute entière
    Les solutions que je t'ai proposées ainsi que celle de BlueMonkey n'on rien à voir avec du VBA, ce sont des outils d'excel.

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

Discussions similaires

  1. [XL-2013] Mise en forme conditionnelle sur une cellule contenant une formule
    Par CrasherSEP dans le forum Conception
    Réponses: 2
    Dernier message: 20/05/2015, 13h19
  2. [XL-2007] Valeur initiale d'une cellule contenant une formule
    Par canard29 dans le forum Excel
    Réponses: 7
    Dernier message: 30/03/2013, 09h36
  3. Gerer une cellule contenant une formule
    Par bernard38 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/08/2011, 09h06
  4. [OpenOffice][Tableur] Contenu d'une cellule contenant une formule
    Par jbwan dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 18/04/2011, 16h55
  5. Probleme avec COUNT() contenant une condition
    Par smarties dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/07/2007, 10h19

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