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 :

Incompatibilité de type :-( [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut Incompatibilité de type :-(
    Bonjour à tous,

    Grand débutant en macro VBA, je n'arrive pas à résoudre un problème d'incompatibilité de type.
    Voilà l'idée: j'ai des valeurs (colonne 19) dont je souhaite faire la moyenne par intervalle c'est-à-dire en fonction des valeurs stockées dans la colonne 11 et stocker ces moyennes dans la colonne 65.
    Le problème se situe dans les conditions de ma boucle while...

    Pourriez-vous m'aider SVP?
    Merci d'avance!

    Voici le programme:

    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
    Sub Moyenne()
     
    Dim nb_cell As Integer
    Dim pas As Integer
    Dim p As Integer
    Dim Total_cells As Integer
    Dim nb_interval As Integer
    Dim somme As Single
    Dim Moyenne As Single
     
    nb_interval = InputBox("nombre interval")
     
    pas = 0
    Moyenne = 0
    p = 1
     
    Total_cells = ActiveSheet.UsedRange.Rows.Count
     
    While pas <= nb_interval
     
        For i = 4 To Total_cells
    While [Cells(i, 11).Value > (374967 + pas * 2221 / nb_interval)] And [Cells(i, 11).Value <= (374967 + (pas + 1) * 2221 / nb_interval)]
            somme = somme + Cells(i, 19).Value
            nb_cell = nb_cell + 1
            Wend ' problèmes
     
        Moyenne = somme / nb_cell
        Cells(p, 65) = Moyenne
        p = p + 1
        somme = 0
        nb_cell = 0
        pas = pas + 1
        Next i
     
    Wend
    End Sub

  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 de crochets, vba c'est pas un traitement de texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While (Cells(i, 11).Value > (374967 + pas * 2221 / nb_interval)) And (Cells(i, 11).Value <= (374967 + (pas + 1) * 2221 / nb_interval))

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut
    Merci pour votre réponse qui m'a permis d'avancer!

    J'arrive maintenant à faire fonctionner la macro (après quelques modifications) mais seulement si nb_interval est inférieur à 15... La valeur critique du pas est 14. Au-delà, je dépasse la capacité d'un des paramètres, sans réussir à trouver lequel. Le problème se situe toujours dans la déclaration de la boucle while
    Encore une fois, merci d'avance pour votre aide!

    Voici le programme avec les modifications:

    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
    Sub Moyenne()
    
    Dim nb_cell As Integer
    Dim pas As Integer
    Dim p As Integer
    Dim Total_cells As Long
    Dim nb_interval As Integer
    Dim somme As Single
    Dim Moyenne As Single
    
    nb_interval = InputBox("nombre interval")
    
    pas = 0
    Moyenne = 0
    p = 1
    nb_cell = 0
    
    Total_cells = ActiveSheet.UsedRange.Rows.Count
    
    While pas < nb_interval
    
        For i = 4 To Total_cells
    
            While (Cells(i, 11).Value > (374967 + pas * 2221 / nb_interval)) And (Cells(i, 11).Value <= (374967 + (pas + 1) * 2221 / nb_interval))
            somme = somme + Cells(i, 19).Value
            nb_cell = nb_cell + 1
            i = i + 1
            Wend
    
        Moyenne = somme / nb_cell
        Cells(p, 65) = Moyenne
        p = p + 1
        somme = 0
        nb_cell = 0
        pas = pas + 1
        Next i
    
    Wend
    End Sub

  4. #4
    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
    Tu es maître de tes déclarations en fonction des valeurs possibles de tes variables.
    Regardes ce tuto

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut
    Il suffisait effectivement de changer de déclaration (Integer -> Long) et ça a résolu le problème!

    Merci, la macro tourne bien!

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

Discussions similaires

  1. Incompatibilité de type ListBox
    Par priest69 dans le forum Access
    Réponses: 1
    Dernier message: 16/11/2005, 11h19
  2. Message incompatibilité de type
    Par Daniel MOREAU dans le forum Access
    Réponses: 5
    Dernier message: 10/10/2005, 20h57
  3. incompatibilité de type
    Par zooffy dans le forum Access
    Réponses: 2
    Dernier message: 13/06/2005, 15h12
  4. Incompatibilité de types dans un formulaire
    Par ahage4x4 dans le forum ASP
    Réponses: 3
    Dernier message: 03/05/2005, 15h39
  5. [XSD] Incompatibilité des types xs:ID et xs:IDREF ?
    Par Cpt.FLAM dans le forum Valider
    Réponses: 6
    Dernier message: 08/04/2005, 14h54

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