Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Utiliser une variable dans un call

  • Initiateur de la discussion Initiateur de la discussion siocnarf
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

siocnarf

XLDnaute Occasionnel
Bonjour,

Je souhaite prendre le bout de code ci-dessous et en faire une sous-routine car il est répétitif. Mon problème est que dans ce bout de code, il y a un call ... qui doit être fait et que la sous-routine appelé change d'une fois à l'autre. Quelle serait la bonne manière de procéder? Est-il possible d'utiliser une variable d'une manière ou une autre et de la passer dans un Call??

Code:
IntFinalColStat = Sheets(DefP_VFeuilStatData(0)).Cells(2, Application.Columns.Count).End(xlToLeft).Column

Sheets(DefP_VFeuilStatData(0)).Cells(1, IntFinalColStat).Select

'Coordonnée de sortie du premier tableau--> Nombre de message pertinents par système
IntCoordEvenementSystemes = "R1C" & IntFinalColStat + 2

StrTableName = "EvenementSystemes"
Set pt = DefP_PTCache.CreatePivotTable(TableDestination:= _
       "'[" & DefP_StrTableaudebord & "]" & DefP_VFeuilStatData(0) & "'!" & IntCoordEvenementSystemes, TableName:=StrTableName, DefaultVersion:=xlPivotTableVersion10)
Call [B]PivotEvenementsSystemes[/B](StrTableName)

Merci,
 
Re : Utiliser une variable dans un call

Bonjour siocnarf,

Pas sûr d'avoir compris, mais je crois que la réponse est Oui:

Code:
Sub test()
Dim a as long
a=1
Call test2(a)
msgbox a
end sub
 
Sub test2(Byref a as long)
a=a+1
end sub
 
Re : Utiliser une variable dans un call

Re,

Bon, en relisant je vois bien que je n'avais rien compris...

un autre essai :

Code:
StrTableName = "EvenementSystemes"
Application.Run "Pivot" & StrTableName, StrTableName
 
Re : Utiliser une variable dans un call

Bonjour,

Je confirme que Application.Run ne fonctionne pas. J'ai besoin de le faire avec un Call car c'est une sous-routine dans la même macro

L'inscription:

Code:
Call "Pivot" & PaC_SousRoutineNom(StrTableName)

génère une erreur.

J'ai également testé sans succès:

Code:
test = "Pivot" & PaC_SousRoutineNom & "(" & PaC_StrTableName & ")"
Application.Run test

Comment contourner ce problème?

Merci!
 
Dernière édition:
Re : Utiliser une variable dans un call

Bonsoir le forum,
Bonsoir siocnarf, tototiti2008

C'est peut-être la syntaxe de l'appel qui n'est pas bonne.

Avec un Call, la procédure doit avoir la série d'arguments entre ()

Corrigez moi, si je dis une ânerie.

Klin89
 
Re : Utiliser une variable dans un call

Je met une partie de mon code ici.
On remarque que j'ai une sous-routine qui reçoit des variables diverses et qui tente d'appeler la sous-sous-routine PivotEvenementsSystemes. Sans succès... 🙁

Code:
Sub Pivotacreer(PaC_StrTableaudebord, PaC_VFeuilStatData, PaC_IntFinalColStat, PaC_StrTableName, PaC_SousRoutineNom, PaC_PTCache)
Sheets(PaC_VFeuilStatData(0)).Cells(1, PaC_IntFinalColStat).Select

'Coordonnée de sortie du premier tableau--> Nombre de message pertinents par système
IntCoordEvenementSystemes = "R1C" & PaC_IntFinalColStat + 2

Set pt = PaC_PTCache.CreatePivotTable(TableDestination:= _
       "'[" & PaC_StrTableaudebord & "]" & PaC_VFeuilStatData(0) & "'!" & IntCoordEvenementSystemes, TableName:=PaC_StrTableName, DefaultVersion:=xlPivotTableVersion10)
       
test = PaC_SousRoutineNom & "(" & PaC_StrTableName & ")"
'Call "Pivot" & PaC_SousRoutineNom(StrTableName)
'Call PivotEvenementsSystemes
Application.Run test
End Sub
'============================================
'============================================
Sub PivotEvenementsSystemes(P_StrTableName)
 
Re : Utiliser une variable dans un call

Bonsoir,

Peut-être une erreur (horreur?!) de syntaxe mais je ne met pas le doigt dessus... si c'est le cas.

test = PaC_SousRoutineNom & "("
test2 = test & PaC_StrTableName & ")"
Application.Run test2

ce qui donne
application.Run "PivotEvenementsSystemes("EvenementsSystemes")"

Et cela ne fonctionne pas.

Merci
 
Dernière édition:
Re : Utiliser une variable dans un call

Bonjour à tous,

à tester :

Code:
Application.Run "Pivot" & PaC_SousRoutineNom, PaC_StrTableName

Avec Application.Run, les arguments ne sont pas entre parenthèses mais après une première virgule
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

M
Réponses
4
Affichages
2 K
ManOfCatz
M
L
Réponses
5
Affichages
823
LandryK7
L
R
Réponses
8
Affichages
2 K
raoulruiz
R
D
  • Résolu(e)
Réponses
2
Affichages
531
delube
D
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…