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 :

Calcul de pourcentages


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Enseignant
    Inscrit en
    Décembre 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 21
    Par défaut Calcul de pourcentages
    Bonjour,

    J'ai écrit un programme qui pour chaque secteurs définis va récupérer les données des écoles concernées et me les coller à l'endroit indiqué. Ensuite il me somme chaque colonne. Jusque là, tout fonctionne parfaitement. Ensuite, je voudrais faire des pourcentages sachant que les colonnes fonctionnent par 3 (les 3 premières colonnes se rapportent à une même donnée, les 3 suivantes à une autre donnée...). J'ai systématiquement une erreur 6 "Dépassement de capacité". 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
    Set FO = ThisWorkbook.Sheets("FRANCAIS") 'Feuilles d'où les données vont être extraites
    Set FO2 = ThisWorkbook.Sheets("MATHS")
    Set FD = ThisWorkbook.Sheets("PAR_SECTEURS") 'Feuille de destination
     
    LastLigne = FD.Cells(Rows.Count, "M").End(xlUp).Row 'Récupére le nombre de lignes de la colonne du premier secteur.
    DerLigne = FO.Cells(Rows.Count, "J").End(xlUp).Row 'Récupére le nombre de lignes de la colonne RNE sur la feuille "Analyse ECOLES"
    'DerLigne2 = FO.Cells(Rows.Count, "J").End(xlUp).Row
     
    'Récupération des données de français pour les écoles du secteur
    j = 28
    For Ligne = 2 To LastLigne
        i = 78
        While i < DerLigne + 1
            If FD.Cells(Ligne, "M").Value = FO.Cells(i, "J").Value Then
                With FO
                   FO.Range("K" & i & ":AN" & i).Copy Destination:=FD.Range("J" & j)
                End With
                i = i + 1
                i = DerLigne + 1
                Else
                i = i + 1
            End If
        Wend
        j = j + 1
    Next Ligne
    'Calcul des sommes et pourcentages d'élèves à besoin et récupération dans le tableau
     
    Dim A As Single
     
    For col = 10 To 41
        Cells(101, col) = Application.WorksheetFunction.Sum(Range(Cells(28, col), Cells(100, col)))
        Cells(101, col + 1) = Application.WorksheetFunction.Sum(Range(Cells(28, col + 1), Cells(100, col + 1)))
        Cells(101, col + 2) = Application.WorksheetFunction.Sum(Range(Cells(28, col + 2), Cells(100, col + 2)))
        A = Cells(102, col) / Application.WorksheetFunction.Sum(Range(Cells(101, col), Cells(101, col + 2))) * 100
        col = col + 2
    Next col
    Je l'ai lancé pas à pas et j'ai compris que ce qui l'embêtait, c'était les zéros présents dans certaines cases. Quelqu'un aurait-il une idée de la condition à écrire pour arranger ce soucis ?

    Merci d'avance pour vos réponses.

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,
    Citation Envoyé par RP766 Voir le message
    je voudrais faire des pourcentages sachant que les colonnes fonctionnent par 3
    Je ne comprends pas toute ta problématique mais une fonction de VBA devrait te simplifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For col = 10 To 41 step 3
    ...   
    ' col = col + 2 à supprimer
    Next col
    D'autre part, si tu as un dépassement de capacité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim A As Single
     
    pourrait devenir
     
    Dim A As Double

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par RP766 Voir le message
    J'ai systématiquement une erreur 6 "Dépassement de capacité". Voici le programme :
    Quelle ligne de code est désignée par le débugage ?
    Quelles sont tes déclarations de variables ?

    Je l'ai lancé pas à pas et j'ai compris que ce qui l'embêtait, c'était les zéros présents dans certaines cases.
    Quelles cases ?
    Quelle ligne de code est "embêtée" ?

    Si le problème est causé par le Sum(Range(Cells(101, col), Cells(101, col + 2))) égal à 0, ça ne peut pas s'arranger puisque la division par 0 est impossible dans l'algèbre classique comme on l'apprend à l'école primaire.
    Par conséquent, on ne peut pas calculer le pourcentage d'un ensemble nul.

    Reste à savoir ce que tu souhaites comme résultat si tu te trouves dans ce cas de figure.

    Si tu veux que le pourcentage renvoyé soit, lui aussi, nul (ce qui serait une erreur mathématique), tu peux éventuellement gérer cette erreur ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        B = Application.WorksheetFunction.Sum(Cells(101, col).Resize(1, 3))
        A = 0
        If B > 0 Then A = Cells(102, col) / B * 100

Discussions similaires

  1. Calcul de pourcentages
    Par Lypertrophie dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 30/06/2006, 11h25
  2. Reqête avec un calcul de pourcentage
    Par jean-pierre96 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/05/2006, 13h00
  3. Réponses: 1
    Dernier message: 10/01/2006, 20h35
  4. calcul de pourcentage
    Par PAUL87 dans le forum Access
    Réponses: 12
    Dernier message: 20/09/2005, 19h50
  5. Calcul de pourcentage
    Par megazen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/11/2003, 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