gothikth
Messages postés80Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention11 mai 2007
-
14 avril 2007 à 17:38
gothikth
Messages postés80Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention11 mai 2007
-
15 avril 2007 à 14:23
alors voila je ne comprend ma variable bien declarer en public, je verifie son contenu mais elle ne passe pas dans mes cas ni café ni chocolas alors qu'elle est bien soit chocolat soit café
alors je suis bloquer sa mais jamais arriver cela si vous avait une idee
merci
Select Case donneeFacture
Case "Chocolat"
LigneExcel = 29
' Affecte les données dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(LigneExcel, 4) = 1
End With
Case "Café"
LigneExcel = 29
' Affecte les données dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(LigneExcel, 3) = 1
End With
Attention aux majuscules et aux minuscules. Soit tout en majuscules soit tout en minuscules.
Utilise VBA.Strings.Format$(donneeFacture, VBA.VbStrConv.vbLowerCase) pour convertire
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 14 avril 2007 à 19:07
Bonjour,
Il te suffit d'essayer ceci :
Private Sub Form_Load()
donneefacture = "Chocolat"
Select Case donneefacture
Case "Chocolat"
MsgBox "choco"
Case "Café"
MsgBox "kawa"
End Select
End Sub
Pour voir que çà marche bien et que le select n'est pas mis en cause, dans ton affaire...
En conséquence c'est autre chose avec ta variable donneefacture, pardi (un espace avant ou après , la casse, une mauvaise récupération...)
Ton premier réflexe devrait être un msgbox donneefacture juste avant le select case (juste pour voir ce quu'elle contient.réellement)
Je ne connais par ailleurs rien à VBA, mais je n'aime pas les choses inutiles !
ton
Select Case donneeFacture
Case "Chocolat"
LigneExcel = 29
' Affecte les données dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(LigneExcel, 4) = 1
End With
Case "Café"
LigneExcel = 29
' Affecte les données dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(LigneExcel, 3) = 1
End With
End Select
veut finalement dire ceci :
Select Case donneeFacture
Case "Chocolat"
toto = 4
Case "Café"
toto = 3
End Select
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(29, 4) = 1
End With
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 14 avril 2007 à 19:12
La variable Public doit absolument être déclaré dans un Module.
Si tu le déclare en Public dans un Module de feuilles (tes Sheets) ou module Classeur (ThisWorkBook), ça ne passera pas.
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 14 avril 2007 à 20:05
rectification
ou encore plus simple
dim toto as integer
toto= 3
if donneeFacture = "Chocolat" then toto=4
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(29, toto ) = 1
End With
cordialement
louis
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 14 avril 2007 à 20:20
et je doit encore préciser que ce devrait être pour la dernière ligne
soit
With ActiveWorkbook
sheets("Feuil1").Cells(29,toto) = 1
End With
ou tout simplement
ActiveWorkbook.woorksheets("Feuil1").Cells(29, toto ) = 1
le With étant employé quand plusieur données font référence au même objet. évitant de le recopier plusieur fois.
A++
gothikth
Messages postés80Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention11 mai 2007 14 avril 2007 à 20:46
alors ma variable est dans un module en public
je suis en vb6
et oui si avant mon selon cas je rénitialise ma variable à "Chocolat" elle passe dans mon cas par contre on messagebox temoin montre aucun espace ou autre c'est pour cela je suis vraiment étonnée
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 14 avril 2007 à 20:54
T'es en VB6 ou VBA Excel ? (pas pareil)
Si t'es en VB6, c'est pas ActiveWorkBook qu'il faut utiliser, avant il faut référencer ton appli Excel + le classeur.
Après pour ton histoire de variable vide, beh avant ton Select Case, il est évident qu'il faut au préalable qu'elle est une valeur.
Select Case donneeFacture Case "Chocolat"
LigneExcel = 29
' Affecte les données dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(LigneExcel, 4) = 1
End With
Case "Café"
LigneExcel = 29
' Affecte les données dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(LigneExcel, 3) = 1
End With
Case vbNullString
MsgBox "donneeFacture est vide"
End Select
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
gothikth
Messages postés80Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention11 mai 2007 14 avril 2007 à 20:56
mais non c'est pas ca mon probleme mon probleme c'est que donneeFacture="Chocolat" mais quand j'arrive au cas chocolat, il passe comme si de rien n'était et comme si donneeFacture n'était = à "chocolat" alors que c'est le cas
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 14 avril 2007 à 21:04
je reviens donc à ce que disais Kenji sur la casse (majuscules / minuscules des caractères) :
Select Case LCase(donneeFacture) 'MODIF ICI Case "chocolat" 'MODIF ICI
LigneExcel = 29
' Affecte les données dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(LigneExcel, 4) = 1
End With
Case "café" 'MODIF ICI
LigneExcel = 29
' Affecte les données dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(LigneExcel, 3) = 1
End With
End Select
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 14 avril 2007 à 21:16
A quel moment appelles-tu le Select Case ?
Un évènement particulier ?
Si tu pouvais nous mettre le code qui est au dessus de ton Select Case + le code où ta variable récupére la valeur chocolat (ou café), ce sera plus simple pour comprendre
(dur dur sans le fichier )
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
Do
MsgBox donner1(i)
donner2 = Split(donner1(i), ":")
If i < 3 Then
donneeFacture = donner2(1)
MsgBox donner2(1)
Else
donneeFacture = donner2(0)
MsgBox donner2(0)
End If
Select Case i
Case 0
LigneExcel = 3
' Affecte les données dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(LigneExcel, 3) = donneeFacture
End With
Case 1
LigneExcel = 4
' Affecte les données dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(LigneExcel, 3) = donneeFacture
End With
End Select
Select Case LCase(donneeFacture)
Case "chocolat"
LigneExcel = 29
' Affecte les données dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(LigneExcel, 4) = 1
End With
Case "café"
LigneExcel = 29
' Affecte les données dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(LigneExcel, 3) = 1
End With