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 sur une cellule #DIV/0! [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut Boucle sur une cellule #DIV/0!
    Bonsoir à tous,

    Pouvez vous me dire l instruction que je dois mettre dans une boucle FOR EACH
    pour que la procédure ne s arrête pas et avec un message d erreur quand elle tombe sur une cellule avec la valeur #DIV/0! ?

    mais critère sont <= 1 and >= 3 et apparament la valeur de #DIV/0! est Erreur 2007 !!!

    d avance merci pour vos réponse

    Alex

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    pas clair comme explication de ton problème mais essaie d'approfondir par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'code
    on error resume next
    'code
    si tu mettais ton code avec des indications...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut
    en faite je boucle sur une colonne et toute les valeur comprise entre 1 et 3,
    je copie cette ligne et la colle dans une autre feuille.

    mais dans mon tableau excel et dans la collone ou je boucle il y a des divison par 0 donc excel mais dans la cellulu #DIV/0! car toute les donné ne sont pas remplie et ne le sera peut etre jamais

    et quand la macro tombe cette cellule elle stop la procédure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      For Each CelSourceTest In WStarifs.Range(CelSourceDeTri)
     
     
                    If (CelSourceTest.Value) >= 1 And (CelSourceTest) <= 3 Then
    '
                    Set CelDestination = WSdestination.Range("a65536").End(xlUp).Offset(1, 0)
     
    '                WStarifs.Range("f" & CelSourceTest.Row & ";p" & CelSourceTest.Row & ":q" & CelSourceTest.Row).Copy
                     WStarifs.Range("f" & CelSourceTest.Row & ":q" & CelSourceTest.Row).Copy
                    CelDestination.PasteSpecial (xlPasteValuesAndNumberFormats)
                    Else

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    #DIV/0!
    ne peut que provenir d'un calcul (formule ou autre) que l'on ne voit pas dans ton code ! (aucune division n'y est visible).

    Et nous avons tous perdu notre boule de cristal...
    A toi de nous apporter, dans ce cas, les précisions nécessaires et inévitables sur ce que tu as fait ou codé dans ce sens...

    Commence par voir (tout premier pas à faire ... on verra ensuite en fonction de ...) si une des cellules où apparaît ce #DIV/0! contient ou non une formule (et laquelle)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (CelSourceTest.Value) >= 1 And (CelSourceTest) <= 3 Then
    Bien sûr c'est déjà différent, vous aviez écrit à l'origine :
    et maintenant c'est :
    Vous voyez la différence.

    Cela revient également à écrire :
    si je ne me trompe pas ?

    Pour le problème de : #DIV/0!

    Ucfoutu vous a adressé une réponse.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut
    Effectivement la valeur #DIV/0! viens d une formule dans une cellule,
    mais je suis obligé de boucler dessus car c est la division d prix d achat par un prix de vente ( coef.) mais actuellement je n ai pas le prix d achat Donc elle divise rien !

    pour ce qui est entre 1 et 3 je sais que c est 2 mais aussi toute les décimale qui vont avec.

    j ai un peut de mal a expliquer plus clairement le problème

    mais si il y avait une instruction pour lui dire que lorsque la valeur de la cellule est #DIV/0! ( en l occurence en vba il traduit ca par "Erreur 2007") elle l ignore

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par alex santus Voir le message
    mais si il y avait une instruction pour lui dire que lorsque la valeur de la cellule est #DIV/0! ( en l occurence en vba il traduit ca par "Erreur 2007") elle l ignore
    Non... (c'est trop tard !)...
    On ne cherche jamais à travailler à partir de l'effet ! On supprime la cause
    (te viendrait-il à l'idée de soigner un furoncle et non la furonculose ? ===>> non ! et c'est ici pareil !)
    Si je comprends bien, cette erreur n'était pas là et n'apparait qu'en exécution de tes instructions (j'espère ...)
    Or, que modifient-elles ces instructions ?

    === > une destination
    et comment ? ===>>> par un paste (coller)

    Remède : ne pas exécuter ce paste si valeur à coller nulle ...

    Reste que je pense que toute ton appli est dans ce cas à revoir (son architecture)
    reste également que nous ne savons pas, en plus, ce que contient ta clause Else.

    Voilà ! J'estime personnellement que tu es maintenant guidé et que le reste relève de ta seule volonté de bien faire.

    EDIT :
    Reste enfin que tu ne nous a pas dit quelle était cette formule.... et c'est dommage, car elle pourrait être affublée d'une clause conditionnelle d'application ...

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    proposition à adapter avec filtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Columns(1).AutoFilter field:=1, Criteria1:=">=2", Operator:=xlAnd, Criteria2:="<=3"
    Cells.SpecialCells(xlVisible).Copy Sheets("Feuil3").Range("A1")
    Columns(1).AutoFilter

  9. #9
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pour Jean jacques, les valeurs ne sont pas forcément des entiers
    et même 1 et 3 font partie du segment

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    mes critères sont :
    <= 1 and >= 3
    et apparament la valeur de #DIV/0! est Erreur 2007 !!!

    Comment voulez-vous qu'une valeur soit en même temps inférieure ou égale à 1 et supérieure ou égale à 3 ?

    On pourrait comprendre, à priori :
    <= 1 or >= 3
    ce qui reviendrait à écrire :
    <> 2
    Mais même dans ce cas, cela veut dire que la valeur 0 est validée et si vous l'utilisez pour une division, il est évident que cela ne peut que provoquer une erreur.

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

Discussions similaires

  1. Boucle sur chaque cellule non vide d'une ligne
    Par janigrel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/02/2015, 15h46
  2. Réponses: 7
    Dernier message: 26/10/2014, 16h47
  3. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  4. Focus sur une cellule spécifique d'un DBGrid
    Par danbern dans le forum Bases de données
    Réponses: 4
    Dernier message: 25/11/2004, 19h04
  5. capter l'evenement clic sur une cellule d'un string grid
    Par lasconic dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/06/2003, 10h51

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