utilisation de variables pour des feuilles

  • Initiateur de la discussion Jean-Christophe
  • Date de début
J

Jean-Christophe

Guest
Bonjour,

Je suis un débutant total en VBA et je n'arrive pas à créer une formule utilisant une valeur contenue dans une autre feuille; cette feuille doit être définie par une variable (mais ai-je défini correctement cette variable...).


Sub Test1()
'
' Test1 Macro
' Macro enregistrée le 19.06.2003 par jcm
'
'
' Définition des variables
Dim Feuille As String
Dim Feuille_CAD As String
Dim Feuille_Mydata As String

' Définition du nom de la feuille CAD
Feuille = Range("B1")
ActiveSheet.Name = Feuille + " (CAD)"
Feuille_CAD = ActiveSheet.Name

' Création de la feuille Mydata
ActiveSheet.Copy after:=ActiveSheet

' Définition du nom de la feuille Mydata
ActiveSheet.Name = Feuille + " (Mydata)"
Feuille_Mydata = ActiveSheet.Name

' Changement orientation CAD => orientation Mydata
Range("D9").Select
ActiveCell.FormulaR1C1 = "orientation Mydata"

' Conversion orientation trigonométrique => horaire
Range("D10").Select
ActiveCell.FormulaR1C1 = "=MOD(360-'DS21.30-F10aF1 (CAD)'!RC,360)"

End Sub


Dans la séquence "Conversion orientation trigonométrique => horaire", j'aimerais remplacer l'appel à la feuille 'DS21.30-F10aF1 (CAD)' par la variable Feuille_CAD, mais pour l'instant tous mes efforts sont restés infructueux...

Si quelqu'un pouvait bien éclairer ma lanterne, je lui en serais très reconnaissant.

Merci d'avance

Jean-Christophe
 
A

Alex

Guest
Salut JC ;


Le plus simple et probablement le plus propre est de proceder comme suit :

dans ton code VB, tu recuperes la valeur de ta variable situee dans ta feuille 1.
dim Mickey
mickey=sheets("feuil1").range("la_cellule_qui_contient_ma_valeur").value

Ensuite, tu te places dans la feuille ou tu veux parametrer ta formule :
sheets("feuile2").activate
range("ma_cellule_dont_je_modifie_la_formule").formula = " la_dite_formule & mickey & suite_de_la_dite_formule"

Le & te sert a concatener, d'ou l'idee d'utiliser une variable locale qui contient la valeur dont tu as besoin.

Good luck avec mickey!
 
J

Jean-Christophe

Guest
Salut Alex,

Un grand merci pour ton aide!

Je ne comprends malheureusement pas bien la concaténation :

la formule que j'utilise ce présente comme suit (si la valeur à convertir est dans la cellule A1):

=MOD(360-A1;360)


Voici ce que j'ai écrit à partir de tes explications:

Dim Angle
Angle = Sheets(Feuille_CAD).Range("D10").Value
Sheets(Feuille_Mydata).Activate
Range("D10").Formula = "=MOD(360- &Angle &;360)"

Il y a une erreur à la dernière ligne...

D'autre part, j'aurai toute une série de valeurs à convertir entre la feuille "Feuille_CAD" et "Feuille_Mydata" (voir le fichier annexé); je ne peux tout de même pas créer 500 variables si j'ai 500 valeurs à convertir. La formule dans "Feuille_Mydata" doit faire référence à la valeur située au même endroit dans "Feuille_CAD", que je puisse simplement la copier ailleurs.... Mais je peux me tromper, je ne suis pas un spécialiste!
 

Pièces jointes

  • CAD_Mydata_alex.zip
    11.6 KB · Affichages: 23
M

mjp

Guest
salut c'est JP

pour la concaténation il faut bien comprendre qu'il y a des parties "Fixes" et "Mobiles"

les parties "Fixes" sont connues

=MOD(360- et ;360)

la partie "Mobile" : A1

la concaténation c'est du texte donc ---> "texte"

la formule : "=MOD(360-" & A1 & ";360)"

si A1 est un nombre il faut le transformer en texte
la formule : "=MOD(360-" & str(A1) & ";360)"

à vérifier si la fonction str(A1) est valide pour Excel

@+ JP
 
J

Jean-Christophe

Guest
Merci pour toutes vos infos!!

Vu que les valeurs à convertir (l'angle de rotation de composants électroniques montés sur un circuit imprimé) dépend de chaque circuit imprimé, j'ai créé une feuille temporaire pour les traiter et ensuite les transférer sur la feuille finale. Ca commence à bien fonctionner!

Nouvelle question: pour être certain que toutes les valeurs seront traitées, j'effectue une rotation du contenu de 200 cellules, alors que peut-être seules 10 contiennent une valeur; mais les cellules vides prennent la valeur 0 après traitement. Est-il possible de faire un test afin que les cellules vides ne soient pas traitées?

Je n'ai aucune documentation sur le VBA d'Excel, excepté l'aide en ligne; peut-on me conseiller un bon bouquin pour débuter, mais qui soit suffisamment complet pour ne pas être trop vite bloqué?
 

Discussions similaires

Statistiques des forums

Discussions
314 095
Messages
2 105 816
Membres
109 436
dernier inscrit
alex.972