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 code VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 54
    Points : 24
    Points
    24
    Par défaut Problème code VBA
    Bonjour,

    J'ai une formule sous excel :

    =SI(ET(K393>1;R393="");"";(AD393+AE393)*30+Q393)

    Je dois l'automatiser en VBA et ai donc créer ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For i = 2 To ActiveSheet.UsedRange.Rows.Count
     
    If Range("C" & i) > 1 And Range("J" & i) = "" Then
    Range("R" & i) = ""
    Else
    Range("R" & i) = Range("O" & i).Value + Range("P" & i).Value * 30 + Range("I" & i).Value
     
    End If
    Next i
    Cependant lorsque je l'exécute il me donne une erreur d'incompatibilité de type. Sachant que dans mes colonnes O et P sont stockées des valeurs et dans ma colonne I des dates, je pense que c'est de là que vient le problème. J'ai essayé d'utiliser CDate mais ça n'a rien changé.

    Merci pour les solutions que vous pourrez m'apporter!

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Quelques remarques :
    - Attention tu appliques le *30 qu'à une seule valeur et non à la somme comme dans ta formule initiale
    - n'hésites pas à mettre un .value à chaque fois que tu touches effectivement à la valeur d'une cellule

    Pour ton problème de date, quel est le format des données stockés? Normalement pour excel chaque date est en fait un nombre entier, mais que veux tu faire exactement?
    Peux-tu nous fournir un extrait du classeur comme exemple ? (je n'ai qu'xl 2003 à disposition)

  3. #3
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Bonjour,
    Moi j'ai une question comment tu aditionne valeur et date?
    Les valeur sont peut être des jours
    essaye d'utiliser
    dateadd
    http://access.developpez.com/faq/?page=dates#dateAdd

    sans trop chercher (je n'ai pas testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("R" & i) =dateadd("d",Range("O" & i).Value + Range("P" & i).Value * 30, Range("I" & i).Value)
    Edit
    bonjour HurGeek on s'est croisé. Tu as raison pour les parenthèse et effectivement on peut directement travailler sur la valeur entière de la date si on ajoute bien des jours

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 54
    Points : 24
    Points
    24
    Par défaut
    Merci pour vos réponses rapides !

    Voici un bout de mon fichier.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Bon dans ton fichier il n'y a pas de macro. Tu compare une date colonne J avec un statut qui est un entier
    Ta formule travaille sur des ligne ou il n'y a n'y valeur en P ni en O, c'est normale? Par contre a chaque fois il y a des infos sur la ligne suivante.
    BRef le prochaine fichier essaye de faire en sorte qu'il contienne les bonne infos (c'est peut être le cas mais la ce n'est pas cohérent du tout), et met ta version retravaillé de la macro

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 54
    Points : 24
    Points
    24
    Par défaut
    Désolé .

    Voici le nouveau fichier, il suffira de lance la Macro1 et vous pourrez voir l'erreur. Lorsqu'il vous demandera d'entrer une date mettez : "26 octobre 2009".

    Merci !
    Fichiers attachés Fichiers attachés

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Points : 56
    Points
    56
    Par défaut
    Ok ta maccro plante quand la cellule de la colonne O est vide pour le calcul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("R" & i) = Range("O" & i).Value + Range("P" & i).Value * 30 + Range("I"& i).Value
    Je te conseille de mettre (par exemple...):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("R" & i) = iif(Range("O" & i).Value="";0;Range("O" & i).Value) + Range("P" & i).Value * 30 + Range("I"& i).Value
    bon courage

Discussions similaires

  1. Problème Code VBA, ajout non désiré sur bouton
    Par vivicente dans le forum VBA Access
    Réponses: 3
    Dernier message: 12/06/2008, 18h33
  2. Problème code VBA
    Par nanot dans le forum VBA Access
    Réponses: 21
    Dernier message: 04/06/2008, 16h24
  3. Problème code vba
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2008, 13h03
  4. Problème code VBA :)
    Par Freygolow dans le forum Access
    Réponses: 4
    Dernier message: 17/05/2007, 16h43

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