mettre une variable dans une macro?

Le
Uncas Cooper
Bonjour a tous,

Par avance merci de votre aide.

Voici la situation:
j'ai une macro Write_value()

j'ai une deuxieme macro boucle()

dans cette macro boucle si je fais:
Call write_value("Toto")

pas de probleme.

Mais si je fais quelque chose du genre:

toto = Cells(ligne, 1).Value & "-" & code_ISIC
Call write_value (Toto)

Impossible de "passer" ma variable Toto a l'autre macro, et je ne trouve
pas. Je dois declarer quelquechose? ou? Si je pointe sur la variable
toto est a l'air d'avoir la bonne valeur.

Merci beaucoup.

Uncas

pour info les deux subs sont ci dessous:
-
Sub boucle_en_ligne()

Dim code_ISIC, clef As String
code_ISIC = "FR0004254035"

Dim ligne As Integer

Sheets(2).Select

For ligne = 3 To 100
clef = Cells(ligne, 1).Value & "-" & code_ISIC
clef = "cat"
Call write_value(clef)

Next

End Sub


--
Public Sub write_value(key As String)

Sheets(1).Select
Cells.Find(what:=key).Offset(0, 3).Select
tempo = Selection.Value
Sheets(2).Cells(2, 2).Value = tempo

End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
francois.forcet
Le #7083721
Salut à toi

Pourquoi ne pas déclarer ta variable toto en variable Public en
mettant en tout début cette ligne :

Public toto

La valeur toto récupéré en 1° macro (toto = Cells(ligne, 1).Value &
"-" & code_ISIC )


sera reconduite dans la 2° macro sans utiliser la ligne : Call
write_value (Toto)

directement utilisable comme par exemple MsgBox(toto)

Seul impératif éxécuter la 1° macro avant d'éxécuter la 2° en mettant
en fin de 1° Macro la commande :

Run("2° Macro")

Celà devrait faire

Dis moi !!!!
Uncas Cooper
Le #7087361
Bonjour MichDenis,

pardon j'ai fait un coper coller un peu rapide.
Je n'active qu'une des deux lignes, l'autre je la mets en commentaire.
quand j'attribue "cat" a clef ça marche tout seul mais pas dans l'autre cas.

Merci pour la proposition je vais voir si je m'en sors



MichDenis escribió:
à quoi serve ces 2 lignes de code :

| clef = .Cells(ligne, 1).Value & "-" & code_ISIC
| clef = "cat"

Que veux-tu attribuer comme valeur à Clef ? Tu as droit à une valeur à la fois !

Dans cette procédure, Public Sub write_value(key As String), tu utilises
la méthode "Find". Cette dernière renvoie une erreur de type 91 lorssqu'elle
ne trouve pas donc tu dois utiliser avant ceci : On error resume next

Voici une façon de réécrire tes macros :

'----------------------------
Sub boucle_en_ligne()

Dim ligne As Integer
Dim code_ISIC As String, clef As String
code_ISIC = "FR0004254035"

With Sheets(2) 'Préférable d'inscrire son nom
For ligne = 3 To 100
clef = .Cells(ligne, 1).Value & "-" & code_ISIC
clef = "cat"
' à toi de déterminer où les données doivent être copiées.
.Cells(2, ligne) = Trouve_value(clef)
Next
End With
End Sub
'----------------------------

'----------------------------
Public Function Trouve_value(key As String)
On Error Resume Next
With Sheets("NomFeuille") 'nom feuille à déterminer
Trouve_value = .Cells.Find(what:=key).Offset(0, 3)
End With
End Function
'----------------------------




"Uncas Cooper" Bonjour a tous,

Par avance merci de votre aide.

Voici la situation:
j'ai une macro Write_value()

j'ai une deuxieme macro boucle()

dans cette macro boucle si je fais:
Call write_value("Toto")

pas de probleme.

Mais si je fais quelque chose du genre:

toto = Cells(ligne, 1).Value & "-" & code_ISIC
Call write_value (Toto)

Impossible de "passer" ma variable Toto a l'autre macro, et je ne trouve
pas. Je dois declarer quelquechose? ou? Si je pointe sur la variable
toto est a l'air d'avoir la bonne valeur.

Merci beaucoup.

Uncas

pour info les deux subs sont ci dessous:
-------------------------------------------------------
Sub boucle_en_ligne()

Dim code_ISIC, clef As String
code_ISIC = "FR0004254035"

Dim ligne As Integer

Sheets(2).Select

For ligne = 3 To 100
clef = Cells(ligne, 1).Value & "-" & code_ISIC
clef = "cat"
Call write_value(clef)

Next

End Sub


--------------------------------------------------------
Public Sub write_value(key As String)

Sheets(1).Select
Cells.Find(what:=key).Offset(0, 3).Select
tempo = Selection.Value
Sheets(2).Cells(2, 2).Value = tempo

End Sub


Uncas Cooper
Le #7087991
ça a marché nickel, merci beaucoup!

C'est juste c'est la premiere fois que je mets a utiliser des variables
et je ne suis pas du tout a l'aise encore pour savoir comment je les
definis, quelles portee elles ont etc...


merci encore

uncas


escribió:
Salut à toi

Pourquoi ne pas déclarer ta variable toto en variable Public en
mettant en tout début cette ligne :

Public toto

La valeur toto récupéré en 1° macro (toto = Cells(ligne, 1).Value &
"-" & code_ISIC )


sera reconduite dans la 2° macro sans utiliser la ligne : Call
write_value (Toto)

directement utilisable comme par exemple MsgBox(toto)

Seul impératif éxécuter la 1° macro avant d'éxécuter la 2° en mettant
en fin de 1° Macro la commande :

Run("2° Macro")

Celà devrait faire

Dis moi !!!!


Misange
Le #7088011
Bonjour

alors cette page est pour toi !
http://www.excelabo.net/excel/macrosvariables.php

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Uncas Cooper a écrit :
ça a marché nickel, merci beaucoup!

C'est juste c'est la premiere fois que je mets a utiliser des variables
et je ne suis pas du tout a l'aise encore pour savoir comment je les
definis, quelles portee elles ont etc...


merci encore

uncas


escribió:
Salut à toi

Pourquoi ne pas déclarer ta variable toto en variable Public en
mettant en tout début cette ligne :

Public toto

La valeur toto récupéré en 1° macro (toto = Cells(ligne, 1).Value &
"-" & code_ISIC )


sera reconduite dans la 2° macro sans utiliser la ligne : Call
write_value (Toto)

directement utilisable comme par exemple MsgBox(toto)

Seul impératif éxécuter la 1° macro avant d'éxécuter la 2° en mettant
en fin de 1° Macro la commande :

Run("2° Macro")

Celà devrait faire

Dis moi !!!!




Publicité
Poster une réponse
Anonyme