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. 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 ;-)
  2. 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 ;-)
  3. Mon code est utilisé dans CATIA V5

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

    Merci ;)
    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. 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
          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. 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
              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+