Select Case

Bonjour,

Peut-on m'informer sur Select Case.

Voici un bout de code que j'ai fait, il me pose un problème

Mon bouton s'appelle "Enrg"

Select Case Enrg

Case Is = "Rapide"

Range("io65000").End(xlUp).Offset(1, 0).Select

ActiveCell.Offset(0, 0).Value = ComboBox.Value

ActiveCell.Offset(0, 1).Value = Qté.Value

ActiveCell.Offset(0, 2).Value = PU.Value

Result2 = Format(Sheets("donnes").Range("ir3"), "#.00")

Case Is = "Emporté"

Range("is65000").End(xlUp).Offset(1, 0).Select

ActiveCell.Offset(0, 0).Value = ComboBox.Value

ActiveCell.Offset(0, 1).Value = Qté.Value

ActiveCell.Offset(0, 2).Value = PU.Value

Result2 = Format(Sheets("donnes").Range("iv3"), "#.00")

Pourquoi il me donne l'erreur "Incompatibilité de type

Merci de votre dévouement

Amicalement

Noel

Bonjour,

Il serait intéressant d'avoir le fichier sur lequel la macro est implémentée pour déboguer.

Bonjour,

Is sert à comparer des objets, pas adapté ici.

Select Case Enrg
Case"Rapide"
'...

Merci d'indenter et d'utiliser la balise Code pour mettre en forme les codes déposés.

eric

Bonjour

Mon bouton s'appelle "Enrg"

Select Case Enrg 'vous cherchez .caption ou valeur comme "true" et "false"  par ex sur "ToggleButton" ou ......
Case Is = "Rapide"   ' .caption= "Rapide" ....  .value= True

Bonjour,

Raja

Le fichier est trop gros pour pouvoir l'envoyer.

Amir

Il n'a rien à voir avec "Caption"

Eric

Il ne sert pas non plus à comparer les objets.

Select Case remplace mon code "If"

Exp :

if enrg = "Rapide" then( 'Je lui demande de m'installer dans le cellules correspondantes les valeur de :Combobox, Qté et de PU dans les colonnes concernées)

Range("io65000").End(xlUp).Offset(1, 0).Select

ActiveCell.Offset(0, 0).Value = ComboBox.Value

ActiveCell.Offset(0, 1).Value = Qté.Value

ActiveCell.Offset(0, 2).Value = PU.Value

Result2 = Format(Sheets("donnes").Range("ir3"), "#.00")

Bien sure j'ai remplacé "If par" Select Case"

et il me donne l'errue citée.

Comment faire qudn on doit dispatcher les valeurs dans les cellules.

J'espère que je me suis bien fait comprendre.

@+

Amicalement

Noel

Bonjour

Mon bouton s'appelle "Enrg"

Je veux dire si "Enrg" est vraiment un bouton (control) vous ne pouvez pas le comparer avec des valeurs ou des expressions

Re,

Amir,

Ce bouton sert pour appeler ma routine afin de dispatcher les valeurs

En aucun moment je le compare. C'est juste pour remplir mes cellules.

@+

Noel

Bonjour

SVP dit moi sur quel ligne la macros s’arrête

Sur « Case Is = "Rapide" » ou sur Result2 = Format(Sheets("donnes").Range("iv3"), "#.00")

re,

Amir

La Macro s'arrête sur le ligne Case Is ="Rapide"

Mais si désacive il s'arrête sur Case Is suivant

@+

Amicalement

Noel

bonjour

SVP on va Pas à Pas :

Mon bouton s'appelle "Enrg"

"Enrg" il s agit de quel type de bouton =>> CommandButton, ToggleButton ou ….

Re,

CommandButton,

@+

Bonjour,

Sous réserve que Enrg soit une variable et que cette variable ait été initialisée en amont.

Et que les contrôles impliqués existent et comportent des valeurs...

Sub Test()
    Dim Result2$, k$, kr$
    Select Case Enrg
        Case "Rapide"
            k = "IO": kr = "IR"
        Case "Emporté"
            k = "IS": kr = "IV"
    End Select
    With ActiveSheet.Range(k & 65536).End(xlUp).Offset(1)
        .Cells(1, 1) = ComboBox1.Value
        .Cells(1, 2) = Qté.Value
        .Cells(1, 3) = PU.Value
    End With
    Result2 = Format(Worksheets("donnes").Range(kr & 3), "#.00")
End Sub

Cordialement.

Bonjour Ferrand,

Bien reçu toujours sur l'ile?

C'est un peu compliqué pour moi.

Il faudra que tu m'explique ne détail.

Enrg n'est pas une variable mais un bouton que j'actionne, qui me permet selon le contenu mon combobox il va inscrire les valeurs appropriées dans chaque cellule de ma feuille.

Select Case Enrg

Case "Rapide"

k = "IO": kr = "IR"

Case "Emporté"

k = "IS": kr = "IV"

cela voudrait dire quand j'aurai en

Case="Table1"

k = "D": kr = "G"

Case="Table2"

k = "H": kr = "K"

End Select

ainsi de suite mais que demain si j'ai 100 Tables à gérer i faut que je fasse pour les 100 Tables cela me ferai beaucoup trop de lignes à taper.

Y aurait-il une solution plus adéquate.

Sinon je vais quand même essayer ton code.

Merci beaucoup

Je crois que je t'ai donné mes coordonnées. Si c'est pas le cas fais moi savoir.

@+

Amicalement

Noel

Bonjour

Si vous avez un bouton nome " CommandButton2" le code suivant donne :

Private Sub CommandButton2_Click ()
MsgBox CommandButton2  ‘ résultat  "faux"
End Sub

Et je pense que c est le même avec :

Private Sub Enrg _Click ()
MsgBox Enrg  ‘ résultat  "faux"
End Sub

Alor il se comporte comme un variable de type "Boolean" true ou false

Et "Rapide" et "Emporté" sont de type "Text" .

type "Boolean" et type "Text" sont incompatible

"Rapide" et "Emporté" bien sûr sont inscrit quelque part, récupérés d une plage, sont inscris sur ce bouton ou il y a autre possibilistes

Je veux dire ou peux "Case Is = " trouver "Rapide" ou "Emporté" , Je pense qu il se trouve sur combobox

Select Case combobox.value 'bien sûr le vrai nom de ton combobox
Case "Rapide"

Cordialement.

Tu ne peux tester un bouton avec Select Case ! Et tester quoi ?

Tu peux tester une de ses propriétés telles que son nom (Name) ou son libellé (Caption)... ?

Si tu testes la valeur de ta ComboBox, c'est elle qu'il faut considérer avec Select Case.

Et attention à la syntaxe de cette instruction...

Cordialement.

Bonjour à tous,

Bonjour Ferrand,

Bonjour Amir,

Je crois que je me suis trompé sur le "Enrg" qui se trouve un bouton qui appelle une procédure.

Cette procédure c'est : If ComboBoxTable = "Rapide" Then

Range("io65000").End(xlUp).Offset(1, 0).Select

ActiveCell.Offset(0, 0).Value = ComboBox.Value

ActiveCell.Offset(0, 1).Value = Qté.Value

ActiveCell.Offset(0, 2).Value = PU.Value

Result2 = Format(Sheets("donnes").Range("ir3"), "#.00")

End If

Etant donné que j'ai une liste d'objets en liste déroulante qui pourrait avoir près de 50 objets comment faire pour éviter de retaper la formule ci dessus 50 fois sachant que : ActiveCell.Offset(0, 0).Value = ComboBox.Value

ActiveCell.Offset(0, 1).Value = Qté.Value

ActiveCell.Offset(0, 2).Value = PU.Value

se répétera 50 fois.

Merci de votre entière collaboration.

Amicalement

Noel

Bonjour,

Avec tes bouts de code qui ne sont pas inclus dans une procédure (Sub... End Sub), qui ne comportent pas de déclarations de variables, tu laisses la porte ouverte à toutes conjectures...

Ce que je pense et dis de façon générale :

  • dans tout code VBA qui se respecte, il n'y a pas de Select, Selection, Activate, etc.
  • l'utilisation de ActiveCell n'est admissible qu'en un seul exemplaire, comme moyen de passer au programme un choix utilisateur ; une fois passé et testé que ce choix rempli les conditions voulus, son affectation ne justifie plus une usage de cette expression
  • toutes les expressions sont dotées de qualificateurs d'objets (pas de lignes de code commençant par Cells ou Range... sans point devant manifestant le rattachement à un objet dûment identifié
  • les énumérations répétitives peuvent et doivent être évitées, il y a toujours possibilité de faire des boucles...
  • l'utilisation préférentielle de moyens VBA et la limitation maximale des interactions VBA-Excel garantit une exécution plus rapide du code (prélever les données dont on a besoin, les travailler en VBA, en dehors d'Excel, restituer les résultats à la fin...)

Je mets ces points en avant en raison du constat de l'usage aberrant et immodéré de l'enregistreur (lequel ne reproduit que des commandes Excel et est incapable de fournir un code exclusivement VBA, n'ayant pas d'équivalent en procédure Excel manuelle...)

Car il y a bien sûr d'autres considérations qui interviennent pour produire un code optimisé...

Cordialement.

bonjour

Un fichier joint avec la demande fait gagner du temps à tout le monde, Avec tes bouts de code qui ne sont pas inclus dans une procédure (Sub... End Sub), qui ne comportent pas de déclarations de variables, tu laisses la porte ouverte à toutes conjectures...

Je pense tu peux envoyer un extrait de ton fichier avec la présentation qui vous intéresse maintenant et vous effacer ou anonymiser toutes autres données. SVP utiliser la balise Code pour mettre en forme les codes déposés

re,

Ferrand,

Je comprends tout à fait mais je ne suis pas un ferru des USF.

Je pense pouvoir m'en sortit avec le bout de code que tu m'as fourni.

et je t'en remercie.

Re

Amir,

Comme je te l'avais dit précédemment il m'est impossible de le mettre sur le réseau parce quel il est trop volumineux.

Je veux préparer cette portion du projet et je reviendrai à l'occasion.

En tout cas merci à vous deux.

Amicalement

Noel.

Rechercher des sujets similaires à "select case"