Selon cas

gothikth Messages postés 80 Date d'inscription mardi 27 décembre 2005 Statut Membre Dernière intervention 11 mai 2007 - 14 avril 2007 à 17:38
gothikth Messages postés 80 Date d'inscription mardi 27 décembre 2005 Statut Membre Dernière intervention 11 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
       
End Select

46 réponses

Utilisateur anonyme
14 avril 2007 à 18:14
Salut,

Attention aux majuscules et aux minuscules. Soit tout en majuscules soit tout en minuscules.
Utilise VBA.Strings.Format$(donneeFacture, VBA.VbStrConv.vbLowerCase) pour convertire





__________
 Kenji
0
gothikth Messages postés 80 Date d'inscription mardi 27 décembre 2005 Statut Membre Dernière intervention 11 mai 2007
14 avril 2007 à 18:15
pourquoi je doit convertir????
0
Utilisateur anonyme
14 avril 2007 à 18:27
Tu met Case "Chocolat"
Si donneeFacture est égale à "chocolat" alors c'est différent. Le mieux est de tout mettre en minuscule.






Select Case VBA.Strings.Format$(donneeFacture, VBA.VbStrConv.vbLowerCase)
    Case "chocolat"
      [...]

    Case "café"
      [...]

End Select,

----

(Coloration syntaxique automatique par Kenji)


__________
 Kenji
0
gothikth Messages postés 80 Date d'inscription mardi 27 décembre 2005 Statut Membre Dernière intervention 11 mai 2007
14 avril 2007 à 18:28
a non j'ai bien mit mes maj.....................................
mais je vais essayé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gothikth Messages postés 80 Date d'inscription mardi 27 décembre 2005 Statut Membre Dernière intervention 11 mai 2007
14 avril 2007 à 18:58
non ca ne marche toujour pas aucune erreurs pourtant !
0
Utilisateur anonyme
14 avril 2007 à 19:00
Ajoute un Msgbox donneeFacture avabt ton select case pour voir si c'est bien la bonne valeur.
As-tu fais un débbuggage pas-à-pas ?





__________
 Kenji
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
14 avril 2007 à 19:08
Euh pardon ! A la fin :
With ActiveWorkbook.Worksheets("Feuil1")
        .Cells(29,toto) = 1
  End With
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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~
  
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
14 avril 2007 à 20:02
ou encore plus simple
dim toto as integer

if donneeFacture = "Chocolat" then toto=1
With ActiveWorkbook.Worksheets("Feuil1")
        .Cells(29, toto ) = 1
  End With
cordialement
louis
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
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
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
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++
0
gothikth Messages postés 80 Date d'inscription mardi 27 décembre 2005 Statut Membre Dernière intervention 11 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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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~
  
0
gothikth Messages postés 80 Date d'inscription mardi 27 décembre 2005 Statut Membre Dernière intervention 11 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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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~
  
0
gothikth Messages postés 80 Date d'inscription mardi 27 décembre 2005 Statut Membre Dernière intervention 11 mai 2007
14 avril 2007 à 21:09
non excusez moi mais ca ne fonctionne toujour pas je suis perplexe je ne comprend pas
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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~
  
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
14 avril 2007 à 21:18
Essaie ceci

Select Case LCase(Trim(donneeFacture))
    Case "chocolat"  ' tout en minuscule
       Msgbox "On est passé !"

MPi
0
gothikth Messages postés 80 Date d'inscription mardi 27 décembre 2005 Statut Membre Dernière intervention 11 mai 2007
14 avril 2007 à 21:33
Private Sub WinsockIPserveur_DataArrival(ByVal bytesTotal As Long)


Dim donner1() As String
Dim i As Integer
i = 0


WinsockIPserveur.GetData messRecu 'on met ce que l'on reçoit dans la variable
MsgBox messRecu




donner1 = Split(messRecu, Chr(10))
j = 1
Call ecrireLaFacture




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
       
End Select


i = i + 1
Loop Until donner1(i) = ""


call ecrireLaFacture


End Sub
0
Rejoignez-nous