Macro paramétrée

  • Initiateur de la discussion thomas
  • Date de début
T

thomas

Guest
Une base excel me permet de rentrer des données dans des tables access. J'éxecute donc dans excel des macros pour mettre à jour les données saisies à l'aide d'un bouton (affecté à une macro). Ces macros sont dépendantes d'une cellule de départ (la première cellule d'un tableau). Pour l'instant, j'ai donc rentré dans le code VBA la cellule de départ. Je voulais savoir si il était possible de lancer une macro avec un paramètre et saisir ce paramètre ailleurs qu'en brut dans le code.
Merci de m'éclairer.
 
D

daniel

Guest
il te suffit d'aller la chercher...
si par exemple tu met ton parrametre dans la cellule A1
alors tu vas chercher la valeur par

parametre = MySheet.Range("A1").value

MySheet etant le nom de ta feuille ou tu a insere ton parametre
 
T

thomas

Guest
Ma base excel comporte des données d'entrées. Je peux donc insérer des lignes . Du coup, la case qui réferencera la case de départ de tableau changera. Dans mon code, il faudra que je change egalement cette case. D'où le problème.
Par contre, tu viens de me donner une idée: mettre les cases de référencement dans une autre feuille indépendante. C'est dommage tout de même que dans les options d'une macro, on ne puisse pas dire "lance toi avec cette valeur"
 
Z

Zon

Guest
Bonsoir Thomas,



sub mamacro(parametre as Range)


end sub


C'est un exemple avec une cellule comme paramètre que tu peux utiliser par la suite dans une autre macro, si c'est la première cellule en paramètre dans ta macro principale tu appeleras :

sub principal ()
mamacro("A1")
ens sub


PS: Désolé de ne pas être plus explicite car je ne sais pas trop ce que tu vaux fairte exactement....
 
T

thomas

Guest
Voilà, j'explique clairement mon pb :

J'ai une vingtaine de tableaux dans une meme feuille excel. Chaque tableau possède une case de départ.

ex: tableau 1 case de départ "B8"
tableau 2 case de départ "C60"

J'entends par case de départ la première cellule du tableau ( premiere ligne et premiere colonne)

J'applique sur chaque tableau une macro differente. Ces macros ont besoin pour fonctionner de la premiere cellule du tableau que j'insère pour l'instant dans le code en brut (ex: macro 1 possède une variable cellule egal à B8)

Mon pb est que si j'insere une cellule au debut de ma feuille, chaque case de départ de mes tableaux vont changée

ex: tableau 1 case de départ "B9"
tableau 2 case de départ "C61"

Mais dans mon code , c toujours B8 et C60 comme case de départ !
Et vu qu'il y a 20 tableaux et + bientot je n'ai pas envie à chaque fois de changer les 20 cases de départ dans mon code ! Tout cela doit être transparent en plus à l'utilisateur qui lance la macro (= la solution inputbox "entrez la cellule de depart" ne marche pas).

Je ne vois pas encore de solutions!

Voila j'espère avoir été clair sur mon problème.
Merci Zon pour essayer de m'avoir aidé!

Bonne nuit tous !
 
M

Mytå

Guest
Bonsoir le forum

Thomas utilise alors une range qui trouve ta premiere cellule

debut=range("b1").end(xldown).row

et ensuite Range("B" & debut )

A suivre
smiley_417.gif
 
Z

Zon

Guest
Bonsoir à tous,

La solution de Mytâ est bonne dans le cas où on a qu'un tableau, par contre si on a des des tableaux les uns au dessous des autres là il risque d'y avoir un hic à moins d'avoir entre les tableaux un intervalle fixe.

Peut être en ayant un exemple de ta feuille avec une de tes macros je pourrais mieux t'aider ....


Je pense qu'en mettant un format de cellule spécifique à tes cellules de départ (Police, Motif...), tu pourras ensuite chercher tes cellules "speciales" dans ta feuille de calcul et ainsi faire tes macros plus facilement.



A+++
 
A

Alain

Guest
Appel macro

Je voudrais appeler une macro d'un fichier excel avec une commande dans l'invite de commandes.

Pour lancer un fichier excel il faut faire cet exemple:
D:\program files\Microsoft office\office\excel.exe C:\nova_cde\toto.xls

Mais je ne sais pas lancer une macro de toto.xls

Est-ce possible?
 
T

thomas

Guest
Bonjour ttlemonde !

Voila je joint ci dessous ma base excel ( je l'ai simpliflié à 3 tableaux donc 3 macros ). Si on insere une ligne avant les tableaux, mes macros ne fonctionneront plus !
Zon, l'idée d'appliquer un format spécial aux cases de départ est pas mal ! Mais je ne sais pas du tout le gerer !
Myta, ta solution ne marchera pas dans mon cas, car dans le cas de plusieurs tableaux, si on insere plsusieurs lignes, le tableau precedent finira par prendre la place de l'ancien !

J'attends des idées, merci à vous en tout cas !
 

Pièces jointes

  • entrees.zip
    23.5 KB · Affichages: 29
M

Mytå

Guest
Re le forum

Peut-etre une solution pour toi Thomas

remplace cellule="xx" par ceci

Dim cellule As Variant, i As Integer

For Each cellule In Range("A2:A65536")
If cellule.Value = "Service" Then i = i + 1
If i = 1 Then GoTo Saut ' i=2 pour 2 ieme table, 3 pour 3 ieme ...
Next cellule
Saut:
cellule = cellule.Offset(1, 1).Address

Il va alors trouver la bonne cellule de depart tu remplace le i en fonction du tableau premier(1), deuxieme(2) ....

A suivre
smiley_417.gif
 
T

thomas

Guest
Salut Myta,

Ta solution est cool ! Elle fonctionne bien dans mon cas :) C'est une bonne idée. Je te remercie pour ton aide !

Excuse-moi de pas avoir regarder plus tôt. J'avais une soirée hier :)

@ + sur le forum,
Merci.
 
F

fabiola

Guest
je travaille sur un fichier d'absence et je voudrais détaillé en plusieurs lignes toutes les absences. Ainsi , je dois avoir autant de lignes que d'absence or ma bas est composé de deux cellules avec la datede début et la date de fin de l'absence.
Donc je dois insérer des lignes qui est égal à la différences entre ses deux dates et ensuite faire un copier coller incrémenter. Si vous pouvais résoudre mon probléme , cela serait génial. Car je ne peux pas avancer
 

Pièces jointes

  • Classeur1.xls
    34.5 KB · Affichages: 67
  • Classeur1.xls
    34.5 KB · Affichages: 75
  • Classeur1.xls
    34.5 KB · Affichages: 78

Discussions similaires

Réponses
26
Affichages
417
Réponses
6
Affichages
336

Statistiques des forums

Discussions
312 325
Messages
2 087 306
Membres
103 513
dernier inscrit
adel.01.01.80.19