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 :

{VBA Excel} Optimiser macro si possible


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut {VBA Excel} Optimiser macro si possible
    Voici le code de ma macro avec les commentaires

    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
    Sub control()
    Dim totlig As Long, poid As Double, i As Long
    With Sheets("Saisie") ' Travaille sur la feuille Saisie
    totlig = .Range("Q65536").End(xlUp).Row ' Recupere le nombre de ligne
    poid = 0# ' Initialise le poid calculé
    For i = 5 To totlig ' Demarre la boucle e la igne 5, la 1,2,3,4 sont des titres
    poid = poid + (.Range("Q" & i).Value / 1000) ' additione la valeur poids ramenée au kilo
    If poid >= 3000 Then ' test avec la prochaine valeur si ca depasse les 3 tonnes
    .Range("Q" & i).Interior.ColorIndex = 3 ' je colorie en rouge la cellule
    poid = 0# ' remise à zero des calculs
    Else
    .Range("Q" & i).Interior.ColorIndex = xlNone ' sinon j'enleve la couleur
    End If
    Next i
    End With
    End Sub
    je voudrais rajouter une condition qui me pertmet de calculer les poids seulement dans les cellules ou il y a une valeur

    car actuellement ce programme verifie toutes la colones et si j'ai une case vide il affiche une erreur
    car dans ces cellules se trouves une formules qui vont chercher une valeur si j'ai remplis d'autres cellules


    ce que je voudrais c'est pas de contourner le probleme en metant 0 si il y a rien de fait puis ca marchera car j'ai tester

    mais je veux que ma macro prennent que les cellules ou il y a une valeur

    merci de votre aide

  2. #2
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Tu donnes toi meme la solution
    Citation Envoyé par Thomas69
    je voudrais rajouter une condition qui me pertmet de calculer les poids seulement dans les cellules ou il y a une valeur
    car actuellement ce programme verifie toutes la colones et si j'ai une case vide il affiche une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if .Range("Q" & i).Value <> "" then poid = poid + (.Range("Q" & i).Value / 1000)
    edit:
    Explication de l'erreur:
    L'erreur vient du fait que tu fais des operations avec Range("Q" & i).Value. Ces operations impliquent que la valeur soit de type numerique. Pas forcement du meme type que Poids, les types sont des ensembles et sont compatible entre eux dans une certaine mesure (les integer sont des double mais les double ne sont pas des integer). Il existe un autre moyen (un meilleur moyen meme) de faire face a ce probleme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if isnumeric(Range("Q" & i).Value) then...

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    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
    Sub control()
    Dim totlig As Long, poid As Double, i As Long
    With Sheets("Saisie") ' Travaille sur la feuille Saisie
    totlig = .Range("Q65536").End(xlUp).Row ' Recupere le nombre de ligne
    poid = 0# ' Initialise le poid calculé
    For i = 5 To totlig ' Demarre la boucle à la igne 5, la 1,2,3,4 sont des titres
    If IsNumeric(Range("Q" & i).Value) Then
    poid = poid + (.Range("Q" & i).Value / 1000) ' additione la valeur poids ramenée au kilo
    End If
    If poid >= 3000 Then ' test avec la prochaine valeur si ca depasse les 3 tonnes
    .Range("Q" & i).Interior.ColorIndex = 3 ' je colorie en rouge la cellule
    poid = 0# ' remise à zero des calculs
    Else
    .Range("Q" & i).Interior.ColorIndex = xlNone ' sinon j'enleve la couleur
    End If
    Next i
    End With
    End Sub
    le code marche
    parfaitement

    merci tonton encore une fois de plus


    PS:je te dois combien de bieres

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

Discussions similaires

  1. [VBA] Excel Récuperer Macro sur fichier corrompu
    Par Phenx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/01/2009, 13h13
  2. [VBA-Excel] - nombre de cas possibles
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/01/2007, 10h53
  3. [VBA-Excel]Désactiver macro lors d'un enregistrement
    Par Helios07 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/01/2007, 17h40
  4. VBA Excel- Pb macro unique
    Par martiweb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/10/2006, 10h40
  5. [VBA][Excel]Exécution macro avec fichiers source
    Par ouezon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/12/2005, 00h00

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