Débutant VBScript - Fonction Case

Résolu
Bonjour à tous,

au boulot j'utilise Catia V5, et on m'a demandé de créer une macro pour automatiser la création d'un modèle à partir de données excel. A partir d'une macro récupérée j'ai pu bidouiller quelquechose qui fonctionne, mais là je bloque sur quelquechose :

Ma feuille excel me permet de créer des points dans catia, puis dans une Private Sub dans la macro catia, je crée des lignes qui relient certains points dans des set géométriques différents.

Dans mon fichier excel, une cellule varie (2è ligne, colonne P), elle représente les configurations de points voulues, et en fonction de ce qui est inscrit (il s'agit de texte) dans cette cellule, j'aimerais que la macro catia lance ou non certaines Private Sub.

Après plusieurs essais, j'ai placé ça dans ma macro :

Set valeur_excel = Cells.Value(2, 16)

Select Case valeur_excel

Case 1 valeur_excel = "valeur 1"
Call action1a
Call action1b
Call action1c
Call action1d

Case 2 valeur_excel = "valeur 2"
Call action2a

End Select

Ce code me permet d'éviter d'avoir un message d'erreur lorsque catia commence à créer l'objet avec les propriétés de "valeur 2", mais aucune Private Sub ne se lance

J'avais jamais touché à du VBScript avant ça, donc je tatonne vraiment ..
Si quelqu'un arrivait à me filer un coup de main ce serait super

Merci d'avance bonne soirée (ou journée en fonction)

9 réponses

  1. Contributeur
    Bonjour,
    Je ne sais pas ce que répresente Valeur1 et valeur2 mais il est probable qu'il ne faut pas de guillemet.
        Select Case Cells.Value(2, 16)
    Case "valeur 1"
    Call action1a
    Call action1b
    Call action1c
    Call action1d
    Case "valeur 2"
    Call action2a
    End Select
    A+
    1. J'ai toujours le même souci avec cette notation
      Les Private Sub "action1x" ou "action2x" ne se lancent, peu importe la valeur que prend la cellule excel
      1. Contributeur
        Tu a une erreur ? la quel ? (N° et libellé)
        Où se situe (quel module) la procédure avec tes Select case
        Y a quoi dans la cellules 2,16 ?
        Où se situe tes procédures "actionx" (quel module) ?

        Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
        Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
        1. Voilà l'erreur qui s'affiche :

          http://img856.imageshack.us/img856/194/59tb.png

          Il me met la même chose peu importe le terme qui est juste derrière "Select Case", j'ai essayé avec ActiveWorkSheet et tout ce que j'ai pu trouver sur le net, même erreur quel que soit la variable

          - Le select case est placé une fois que la macro a créé tous les points nécessaires, lorsque je lance simplement un Call vers la private sub à cet endroit, les lignes se créent sans soucis

          - Dans la cellule 2,16 il y à une expression littérale (deux mots séparés par un espace pour être précis)

          - Mes actions (private sub) se situent un peu plus haut dans le code
          1. Contributeur
            Cells n'est pas reconnu !!
            Dans quel appli est ton code..
            Nomme la cellule..
            WorkBooks("LeClasseur").Sheets("LaFeuille").Cells(2, 16)Si tu a créer une instance d'un classeur emploi cette instance.

            1. Mon code est utilisé dans CATIA V5

              Je vais essayer ce que tu m'a donné je te tiens au courant

              Merci ;)
              1. Bonjour,

                Comme le dit lermite222, je verrais plutôt un code du genre :

                Set valeur_excel = Sheets(1).Cells(2, 16).Value

                ou

                Set valeur_excel = Sheets(1).Range("P2").Value

                Mais je ne connais pas CATIA V5, alors j'espère que ça pourra quand même t'aider.

                Si votre problème est résolu, merci de clôturer le sujet en cliquant sur "Problème résolu".
                Administrateur réseaux sous Windows Serveur 2003
                1. Contributeur
                  Il ne faut pas "Set"
                  Ont met Set quand ont veux attribuer un objet et pas une valeur.
                2. Oui c'est vrai, j'avais zappé le Set.

                  Donc c'est ce que lermite et moi avons mis, sans le Set ;-)
              2. J'ai réussi !
                Merci à vous !

                Le code final qui fonctionne est celui ci

                Set fichier_excel = MyXL.ActiveWorkbook
                

                Set lacellule_type = fichier_excel.Sheets("Feuil1").Range("P2")

                la_valeur = lacellule_type.Value

                Select Case la_valeur

                Case "valeur1"

                Call action1
                Call action2
                Call action3

                Case "valeur2"

                Call action4
                End Select

                Merci encore, je vais enfin pouvoir avancer :)
                1. Merci de passer le sujet comme résolu ;-)