Débutant VBScript - Fonction Case

Résolu/Fermé
addesign92 Messages postés 7 Date d'inscription jeudi 7 novembre 2013 Statut Membre Dernière intervention 8 juillet 2015 - Modifié par addesign92 le 7/11/2013 à 19:03
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 - 12 nov. 2013 à 12:12
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)
A voir également:

9 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
7 nov. 2013 à 22:08
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+
0
addesign92 Messages postés 7 Date d'inscription jeudi 7 novembre 2013 Statut Membre Dernière intervention 8 juillet 2015
7 nov. 2013 à 23:00
Ok je vais essayer ça demain, je te remercie
0
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
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 8/11/2013 à 10:19
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 .
0

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

Posez votre question
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
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 nov. 2013 à 13:19
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.

0
Mon code est utilisé dans CATIA V5

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

Merci ;)
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par sipherion le 12/11/2013 à 09:29
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
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
12 nov. 2013 à 10:26
Il ne faut pas "Set"
Ont met Set quand ont veux attribuer un objet et pas une valeur.
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
12 nov. 2013 à 11:04
Oui c'est vrai, j'avais zappé le Set.

Donc c'est ce que lermite et moi avons mis, sans le Set ;-)
0
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 :)
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
12 nov. 2013 à 12:12
Merci de passer le sujet comme résolu ;-)
0