Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1686 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  appeler une macro située dans un module

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

appeler une macro située dans un module

n°1383543
elgobi
Posté le 08-06-2006 à 11:19:35  profilanswer
 

Bonjour,
J'ai un problème dans une macro attachée à une feuille je veux faire appel à une macro situé dans un module (module 1)
Si je me contente de faire Call macro du module 1
ça ne marche pas. Faut il déclarer la macro autrement qu'avec Sub pour qu'elle puisse être appelée dans une autre feuille?
merci d'avance

mood
Publicité
Posté le 08-06-2006 à 11:19:35  profilanswer
 

n°1383685
olivthill
Posté le 08-06-2006 à 13:01:42  profilanswer
 

Cela devrait marcher si la "macro" est déclarée en

Sub macro1(...)
ou Function macro1(...) As ..
ou Public Sub macro1(...)
ou Public Function macro1(..) As ...

Mais bien sûr, il ne faut pas écrire

Private Sub macro1(...)
ou Private Function macro1(...) As ...

Et je crois pas qu'il ne faut pas mettre des espaces dans les noms des functions ou des subroutines, mais peut-être que l'espace dans "macro 1" n'existe pas dans la véritable routine ou fonction.

n°1383709
tegu
Posté le 08-06-2006 à 13:40:27  profilanswer
 

J'aimerais voir rayé des forums ce genre d'expression : « ça ne marche pas »
Car cela ne veut strictement rien dire.
Si une erreur apparaît, il FAUT nous dire laquelle (n° + libellé).
Si le résultat du traitement n'est pas celui attendu; il FAUT nous dire quel résultat est obtenu ET celui qui aurait dû être obtenu.
 
Désolé de prendre ton post comme « cible » elgobi, car c'est en fait une omission courante qui fait tatonner pour rien ceux qui veulent aider.  
Typiquement dans ton cas tu nous donnes un exemple déconnecté de la réalité « Call macro du module 1 » où olivthill en est réduit à se demander si ton nom de fonction est conforme au standard VBA/VB6. Alors que si tu nous donnes le vrai nom de fonction, on écarte d'emblée cet aspect du problème ou on le cible tout de suite plus précisemment.
L'exemple n'est évidemment pas bon puisque un nom de fonction avec des espaces ne peut pas être créé en VBA sans que la ligne devienne toute rouge (et j'espère que tu l'aurais vu) et inopérante, mais le principe reste le même.
 
Sinon, si les conseils d'olivthill ne suffisent pas, essaye de préfixer ta fonction par le nom du module, genre « module1.fonction() »
Désolé pour la digression

n°1383821
elgobi
Posté le 08-06-2006 à 15:10:17  profilanswer
 

Désolée, j'imagine que ce n'était pas très clair mais justement je n'ai pas de message d'erreur c'est juste que dans ma macro ça  ne passe pas par RemplissageYprim (cf. bout de code à suivre)  
 
Voilà la macro qui se trouve dans la feuille1

Code :
  1. Private Sub calculs_Click()
  2. Dim Rtmax As Double
  3. Dim Tab_Y_top() As Double
  4. Dim Tab_Rt() As Double
  5. Dim D As Integer
  6. Dim Cell_result As Range
  7. Dim Cell_Rt As Range
  8. Dim Nb As Integer 'nbre de points de calcul
  9. '''''''''''''''''''''''RESET (pour repartir d'une déflexion nulle )
  10.    
  11.     Cells(ShCalcul.Range("Rt_c" ).Row, ShCalcul.Range("Rt_c" ).Column).Value = 0 'remet l'effort latéral à 0
  12.     Cells(ShCalcul.Range("Ra_c" ).Row, ShCalcul.Range("Ra_c" ).Column).Value = 0 'remet l'effort axial à 0
  13.     Cells(ShCalcul.Range("M_c" ).Row, ShCalcul.Range("M_c" ).Column).Value = 0 'remet l'effort axial à 0
  14.     Counter = 0
  15.     Y_top = ShCalcul.Range("Y_top" ).Value
  16.     Y_top_prim = ShCalcul.Range("Y_top_prim" ).Value
  17.         Do Until Abs(Y_top - Y_top_prim) < 0.0001
  18.         Call Module1.RemplissageYprim
  19.         Counter = Counter + 1
  20.         If Counter = 10 Then
  21.         Exit Do
  22.         Else
  23.         End If
  24.     Loop
  25.    
  26.   End Sub


 
et voilà RemplissageYprim qui se trouve dans le module 1

Code :
  1. Sub RemplissageYprim()
  2. MsgBox "ok"
  3.   Application.Calculation = xlCalculationManual
  4.   For K = 48 To 652
  5.     X = Cells(K, 15).Value
  6.     Cells(K, 16) = X
  7.   Next K
  8.   Application.Calculation = xlCalculationAutomatic
  9.   End Sub


 
Comme j'ai besoin de RemplissageYprim dans plusieurs macros je l'ai mis dans le module1 mais même en essayant  

Code :
  1. Call Module1.RemplissageYprim


La macro calculs_clic ne va pas chercher RemplissageYprim

n°1383831
tegu
Posté le 08-06-2006 à 15:24:59  profilanswer
 

Peux-tu mettre un point d'arrêt sur la ligne Call..., histoire de savoir si c'est l'appel qui débloque où si c'est ta boucle qui est mal ficelée ?

n°1383839
elgobi
Posté le 08-06-2006 à 15:31:46  profilanswer
 

La boucle marche quand je la lance avec outil=> macro=>RemplissageYprim=>executer
J'ai bien la boîte "ok" qui s'affiche donc ça doit être l'appel qui ne marche pas.
Ps: je vais paraître bête mais je ne sais pas ce que c'est un point d'arrêt...

n°1383846
tegu
Posté le 08-06-2006 à 15:37:12  profilanswer
 

Le point d'arrêt : élément important de la partie debogage d'un programme qui ne fait pas ce qu'on veut !
Tu cliques sur la ligne de code que tu veux tester et tu fais F9 (ou menu debogage/Basculer point d'arrêt). Ça change la ligne de couleur et l'exécution de ton programme s'arrêtera sur la ligne marron (mais avant son exécution).
Avec les touches de fonction F8, SHIFT+F8 et F5 (ou la barre d'outils dédiée au debogage) tu contrôles alors l'exécution de ton programme ligne par ligne.
Tu peux ainsi scruter toutes tes variables (fenêtre d'exécution/fenêtre espions/fenêtre variables locales) à tout moment de l'execution du code VBA et repérer le problème.


Message édité par tegu le 08-06-2006 à 15:42:27
n°1383873
galopin01
Posté le 08-06-2006 à 16:14:23  profilanswer
 

bonjour,
le call ne peut pas marcher si et uniquement si
Y_top Et Y_top_prim = 0
Avec une condition Until Abs(x) < 0 c'est la seule explication possible.
 
Pour reformuler la réponse : ce call ne peut que marcher, il faut et il suffit qu'une des 2 valeurs (Y_top ou Y_top_prim) soit différente de 0
A+


Message édité par galopin01 le 08-06-2006 à 16:52:19

---------------
roger
n°1384008
e2prom
Posté le 08-06-2006 à 18:58:57  profilanswer
 

tu fais
Run "mamacro"  
Et c'est tout.

n°1384081
galopin01
Posté le 08-06-2006 à 20:47:06  profilanswer
 

http://perso.orange.fr/galopin01/images/zero.gif


---------------
roger

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  appeler une macro située dans un module

 

Sujets relatifs
Probléme installation IIS module phplancer une macro complementaire excel via script vbs
Macro pour graphique excel"RESOLU" Macro ou lien hypertexte pour ouvrir un fichier .xls
xls en txt via une macroUrgent!!! Appel d'une macro
macro qui permet d'ouvrir un document word URGENTMacro Excel Execution
Macro Excelmacro excel pour copier et trier des colonnes : aide débutant
Plus de sujets relatifs à : appeler une macro située dans un module


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)