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 :

Pb d'execution macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Par défaut Pb d'execution macro
    Bjr,

    J'ai une macro, qui doit en théorie marcher !
    Elle parcours mon tableau de B2 à la derniére ligne écrite en colonne B.
    Pour chaque ligne ou la valeur en B est 1, une variable récupere la valeur de la mm ligne, mais en colonne F.
    Et ainsi de suite, pour arrivé a la somme des valeurs 1.
    Et ainsi de suite pour les valeurs 2, 3, 4 ...etc
    Mon probléme se situe lors de l'execution,
    Pour la valeur 1, tout ce passe comme il faut,
    Pour la valeur 2, la derniére ligne n'est pas prise en compte,
    Pour la valeur 3, les 2 derniéres lignes ne sont pas prisent en compte.
    et ainsi de suite, Je n'arrive pas a comprendre pourquoi il y a un décalage.
    Peut être mon code est déféctueux.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            For i = 1 To 6
                compteurHO = 0
                compteurtotHO = 0
                ligne = Sheets(j).Range("B65536").End(xlUp).Row
                For Each cell In Worksheets(i).Range("B2:B" & ligne)
                    lignecell = cell.Row
                    If cell = i Then
                        compteurHO = Range("F" & lignecell)
                        compteurtotHO = compteurtotHO + compteurHO
                    End If
                lignerang = i + 1
                Sheets("Feuil1").Range("N" & lignerang) = compteurtotHO
            Next i
    J'essaye de faire un fichier exemple plus parlant, mais je promet rien
    Merci de votre aide

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je comprends pas que tu n'aies pas de message d'erreur
    Où il est le Next Cell ? S'il y est, il est bien caché

    PS - Tu devrais jeter un oeil ici, on t'explique des choses

  3. #3
    Membre éprouvé Avatar de golliat
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 104
    Par défaut
    et la variable "j" elle représente quoi?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Le N° de la feuille
    Ça pourrait effectivement avoir une incidence mais comme ça "fonctionne" (!?!) pour la première valeur (de quoi ?) le numéro de feuille "devrait" être correct

  5. #5
    Membre éprouvé Avatar de golliat
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 104
    Par défaut
    Boh les erreurs minimes sont toujours les plus co....
    Merci pour l'info, je voulais savoir plutot ou il l'incrémentait cette variable.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Par défaut
    autant pour moi, c'est quant j'ai copié le code, que j'ai louper des choses, mais ca ne change pas mon problème. Laissé tombé le J.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    For i = 1 To 4
                compteurHO = 0
                compteurtotHO = 0
                ligne = Sheets("Feuil1").Range("B65536").End(xlUp).Row
                For Each cell In Worksheets(i).Range("B2:B" & ligne)
                    lignecell = cell.Row
                        If cell = i Then
                            compteurHO= Range("F" & lignecell)
                            compteurtotHO = compteurtotHO+ compteurHO
                        End If
                Next cell
                 lignerang = i + 1
                Sheets("Feuil1").Range("N" & lignerang) = compteurtotHO
    next i
    Fichiers attachés Fichiers attachés

  7. #7
    Membre éprouvé Avatar de golliat
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 104
    Par défaut
    ca semble fonctionner chez moi.

    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 test()
     
    For i = 1 To 4
                compteurHO = 0
                compteurtotHO = 0
                ligne = Sheets("Feuil1").Range("B65536").End(xlUp).Row
                For Each cell In ActiveSheet.Range("B2:B" & ligne)
                    lignecell = cell.Row
                        If cell = i Then
                            compteurHO = Range("F" & lignecell)
                            compteurtotHO = compteurtotHO + compteurHO
                        End If
                Next cell
                 lignerang = i + 1
                Sheets("Feuil1").Range("N" & lignerang) = compteurtotHO
    Next i
     
    End Sub
    retourne :

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Par défaut
    Chez moi ca bloque a i=2
    Sur 2 dossiers differents, alors je ne comprend pas

  9. #9
    Membre éprouvé Avatar de golliat
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 104
    Par défaut
    ca bloque c'est a dire?

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu es certain que c'est
    compteurtotHO = compteurtotHO+ compteurHO
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    compteurtotHO = compteurtotHO+ 1
    ? Parce que ça me semble plutôt bizarre

  11. #11
    Membre éprouvé Avatar de golliat
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 104
    Par défaut
    enfaite il veut ajouter les valeurs correspondante aux chiffres.

    Exemples :
    Legende
    1 = 2
    2 = 3
    3 = 4

    il a
    1
    1
    1
    2
    2
    2
    3
    3
    3

    sa macro doit retourner
    1 = 6
    2 = 9
    et 3 = 12

    Voila je pense que c'est ce qu'il souhaite.

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Oui mais là il a
    1 + 1 = 2
    2 + 2 = 4
    4 + 4 = 8
    etc
    Comme s'il mutipliait par deux à chaque tour de roue
    Si ce que tu dis est ce que ptitepo veut faire...
    @ptitepo
    Est-ce bien ce que tu veux faire ?

  13. #13
    Membre éprouvé Avatar de golliat
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 104
    Par défaut
    Il est vrai que ce serait plus simple a gérer comme ca. J'y avais meme pas pensé. A voir son .xls cest ce qu'il/elle veut.

    Attendons ca réponse.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Par défaut
    Oui Golliat a bien compris ce que je voulais.
    Pour reprendre son exemple
    1 = 2
    2 = 3
    3 = 4
    si j'ai la serie
    1
    1
    1
    2
    2
    2
    3
    3
    3
    Je passe dans la boucle for je récupere dans une variable compteurHO la 1er valeur de "1"
    Puis je la place dans la variable compteurtotHO, 0+2 = 2
    Au 2iem "1" je récupere la valeur, et je l'additionne avec compteurtotHO, ca fait 2 + 2 = 4
    A la 3iem valeur compteurtotHO = 4 +2
    donc pour la valeur 1 la somme est de 6
    et ainsi de suite pour les autre chiffre.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Par défaut
    Après avoir fait 15 mil débugage pas a pas détaillé avec des millions de msgbox pour tout controlé, a la ligne 19, il la saute, c'est pour ca que j'ai un décalage. Maintenant, pourquoi saute t'il la ligne 19?

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Montre ton code "actualisé"

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Par défaut
    Euh c'est le même, c'est juste que maitenant je sais que c'est la ligne 19 a laquel tout se décale

  18. #18
    Membre éprouvé Avatar de golliat
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 104
    Par défaut
    copie ton fichier complet alors

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Lequel ? Donne le N° de post
    Mais il est clair que si tu rates la ligne 19, c'est que ton/tes compteur(s) pose(nt) problème.
    Tu ne pourrais pas utiliser une autre méthode en imbriquant deux boucles
    Déjà, tu peux simplifier pour la lecture
    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
    For i = 1 To 4
                'Là, tu remets les deux compteur zéro
                compteurHO = 0 
                compteurtotHO = 0
                'Parcours de la colonne B
                For NoLig = 2 to Sheets("Feuil1").Range("B65536").End(xlUp).Row
                         'donc, tu compares successivement la cellule à 1, puis 2, 3 et 4
                         If Cells(NoLig,2) = i Then 
                            'On place dans le compteurHO la données contenue dans F & j
                            compteurHO = Range("F" & NoLig)
     
                            'incrémentation de compteurtotHO
                            compteurtotHO = compteurtotHO + compteurHO
                        End If
                Next cell
                lignerang = i + 1
                Sheets("Feuil1").Range("N" & lignerang) = compteurtotHO
    Next i
    Le problème que je vois déjà est que, si 1, 2, 3 et 4 ne sont pas trouvés
    (If Cells(NoLig,2) = i Then...) les deux dernière lignes de ton code sont quand même exécutées.

  20. #20
    Membre éprouvé Avatar de golliat
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 104
    Par défaut
    Tu peu aussi utiliser deux boucles "for" plutot qu'une boucle for each...

    bien vu ouskel'n'or.

Discussions similaires

  1. Executer Macro TransférerBase
    Par keibenoit dans le forum Access
    Réponses: 4
    Dernier message: 25/09/2006, 09h22
  2. Executer macros Excel via Access
    Par Echizen1 dans le forum Access
    Réponses: 7
    Dernier message: 20/09/2006, 16h09
  3. Execution Macro Access
    Par BODIGUEL dans le forum Access
    Réponses: 1
    Dernier message: 11/09/2006, 10h40
  4. [access] exécuter macro sur chaque enregistrement
    Par alain105d dans le forum Access
    Réponses: 3
    Dernier message: 26/04/2006, 16h50
  5. Réponses: 4
    Dernier message: 19/05/2005, 12h51

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