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 12/01/2012, 13h59   #1
Invité de passage
 
Étudiant
Inscription : novembre 2011
Messages : 22
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2011
Messages : 22
Points : 2
Points : 2
Par défaut Petit souci dans une macro - VBA

Bonjour à toutes & à tous,

Alors voilà, je suis ici car j'ai créé une macro mais celle-ci rencontre un petit problème lorsque je la lance.

Voici le code en question:

Code :
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
40
41
42
43
44
45
46
47
48
49
50
51
52
Sub comptemois()
 
Application.ScreenUpdating = False
'
' Macro1 Macro
'
Dim i, j As Integer
Dim compteur As Integer
Dim eotp, eotp1 As Integer
Dim period, period1 As Integer
 
For k = 3 To 76
Sheets("TempsEOTPMOIS").Select
eotp = Cells(k, 2).Value
eotp1 = Cells(k + 1, 2).Value
 
For m = 3 To 39
 
period = Cells(2, m).Value
period1 = Cells(2, m + 1).Value
 
Sheets("Planning (2)").Select
compteur = 0
i = eotp + 1
 
 
Do While i < eotp1
j = period
Do While j < period1
 
If IsNumeric(Cells(i, j).Value) = False Then
    If Cells(i, j).Value <> "CE01" And Cells(i, j).Value <> "CT02" And Cells(i, j).Value <> "CT04" And Cells(i, j).Value <> "CT10" And Cells(i, j).Value <> "EP03" And Cells(i, j).Value <> "ES01" And Cells(i, j).Value <> "ES02" And Cells(i, j).Value <> "ES03" And Cells(i, j).Value <> "ES04" And Cells(i, j).Value <> "MT01" And Cells(i, j).Value <> "RA01" And Cells(i, j).Value <> "RS02" And Cells(i, j).Value <> "RS03" Then
compteur = compteur + Cells(i + 1, j).Value
    End If
End If
 
 
j = j + 1
Loop
i = i + 1
Loop
 
Sheets("TempsEOTPMOIS").Select
Cells(k, m).Select
ActiveCell.FormulaR1C1 = compteur
 
 
Next
Next
Application.ScreenUpdating = True
'
End Sub
Le déboggueur m'affiche une erreur sur cette ligne:

Code :
compteur = compteur + Cells(i + 1, j).Value
Quel est le problème d'après vous et comment puis-je le résoudre ?

Merci à tous
chpierro62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 14h35   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Quel est le message d'erreur ? Que valent compteur et Cells(i + 1, j).Value dans les espions ?
Ce sont toutes les questions qu'il faut commencer par te poser.

Le problème peut être :
- compteur dépasse la taille maximale d'un entier (un peu plus de 32000). Dans ce cas il faut le déclarer en Long
- Cells(i + 1, j).Value n'est pas un entier (un réel ou du texte) et du coup ça ne peut pas marcher.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 14h43   #3
Membre éclairé
 
Inscription : mai 2006
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2006
Messages : 335
Points : 326
Points : 326
Bonjour à tous

Peut-être que ce n'est pas une valeur qu'il y a dans vu le :
Code :
If IsNumeric(Cells(i, j).Value) = False
donc difficile de faire :
Code :
compteur = compteur + Cells(i + 1, j).Value
Eric
edelweisseric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 14h57   #4
Invité de passage
 
Étudiant
Inscription : novembre 2011
Messages : 22
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2011
Messages : 22
Points : 2
Points : 2
J'ai essayé de déclarer "compteur" en Long mais cela ne résoud pas le problème.

Et ce sont bien des entiers qu'il y a dans les cellules donc cela me semble bizarre...

Concernant l'erreur, c'est juste le deboggueur qui me stipule qu'il y a une erreur sur cette ligne.

D'autres idées ?

Merci !
chpierro62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 15h05   #5
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Effectivement, je n'avais pas bien vu ton code est c'est évident que tu rentres dans la boucle seulement si ce n'est pas un nombre.
Il faut que tu apprennes à te servir du pas à pas et des espions du déboggeur.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 16h30   #6
Membre éclairé
 
Inscription : mai 2006
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2006
Messages : 335
Points : 326
Points : 326
Re

et si tu essayais de mettre
Code :
If IsNumeric(Cells(i, 2).Value) = True
si seules les cellules que tu veux exploiter sont des valeurs
Eric
edelweisseric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 16h34   #7
Invité de passage
 
Étudiant
Inscription : novembre 2011
Messages : 22
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2011
Messages : 22
Points : 2
Points : 2
Re,

Cela ne fonctionne toujours pas, grrrrrrr !!!
chpierro62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 16h43   #8
Membre éclairé
 
Inscription : mai 2006
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2006
Messages : 335
Points : 326
Points : 326
Re

Ta condition est :
Code :
IsNumeric(Cells(i, 2).Value)=False
=> donc "pas valeur"

ton test est : => donc diff de "CE01"....

et tu fais :
Code :
compteur + Cells(i + 1, j).Value
=> donc "valeur"

est-ce bien ce que tu veux faire ?

Fais du pas-à-pas et vérifie ce qu'il y a dans les "variables"

Eric
edelweisseric est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h17.


 
 
 
 
Partenaires

Hébergement Web