Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 03/02/2010, 16h08   #1
Invité régulier
 
Inscription : avril 2009
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 19
Points : 7
Points : 7
Par défaut erreur dans une macro

Bonjour,

je débute en création de macros et j'ai un problème avec ma première macro.

J'essaye de comptabiliser le nombre de noms en gras et le nombre total de cellules renseignées.

Voici la macro que j'ai écrite :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
Sub Taux_reponse()
    Dim Cel As Range, Nbreetudiants As Integer, compteur As Integer, taux As Single
 
    compteur = 0
    For Each Cel In ActiveSheet.Range("A2:A9")
       If Cel.Font.Bold = True Then
       compteur = compteur + 1
       End If
    Next
 
    Nombreetudiants = 0
    For Each Cel In ActiveSheet.Range("A2:A9")
        If Cel.Offset(Nombreetudiants) <> "" Then
        Nombreetudiants = Nombreetudiants + 1
        End If
    Next
    taux = (compteur * 100) / Nombreetudiants
    MsgBox " le taux de réponse est : " & taux & " %"
End Sub
Quand je teste ma macro sur une colonne comprtant huit lignes dont 3 noms en gras, Excel me renvoie le bon nombre de noms en gras mais toujours le résultat "4" pour Nombreetudiants.

Est-ce quelqu'un pourrait m'indiquer quelle erreur j'ai commise ?

merci d'avance.

Dernière modification par chrisbdx ; 03/02/2010 à 16h20.
chrisbdx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 16h28   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 443
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 443
Points : 12 752
Points : 12 752
Code :
If Cel.Offset(Nombreetudiants) <> "" Then
si les réponses des étudiant se trouve en colonne B
il fallait mettre
Code :
If Cel.Offset(0,1) <> "" Then
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 16h31   #3
Invité régulier
 
Inscription : avril 2009
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 19
Points : 7
Points : 7
Non en fait tout se passe dans une colonne qui contient une liste de noms. Je veux tout simplement récupérer le nombre de lignes. Peut-être me suis-je compliqué la tâche...
chrisbdx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 16h39   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 443
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 443
Points : 12 752
Points : 12 752
élimine ta 2ème boucle et fais
Code :
Nombreetudiants=application.worksheetfunction.counta(range("A9:A29"))
bien sur si tu as des cases vides entre le A9 et le A29

sinon tu as 21 étudiants
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 16h43   #5
Invité régulier
 
Inscription : avril 2009
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 19
Points : 7
Points : 7
Merci beaucoup, avec cette instruction cela fonctionne correctement.
Mais je n'ai quand même pas compris pourquoi c'était faux...
chrisbdx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 04h54.


 
 
 
 
Partenaires

Hébergement Web