VBA MACRO declaration/affectation variable
Résolu/Fermé
nunnu27
Messages postés
20
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
22 août 2010
-
22 août 2010 à 11:06
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 22 août 2010 à 21:44
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 22 août 2010 à 21:44
A voir également:
- VBA MACRO declaration/affectation variable
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro logiciel - Télécharger - Organisation
5 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 22/08/2010 à 21:41
Modifié par Patrice33740 le 22/08/2010 à 21:41
Bonjour,
Pas besoin de macro VBA, met en A50 une formule :
=SOMME(A1:A49)
Si tu tiens vraiment à une macro :
Pour déclarer une variable :
Cordialement
Patrice
Nicolas dit toujours : « C'est facile quand on connait la réponse ! »
Pas besoin de macro VBA, met en A50 une formule :
=SOMME(A1:A49)
Si tu tiens vraiment à une macro :
Sub calc() Range("A50").FormulaLocal = "=Somme(A1:A49)" End Sub
Pour déclarer une variable :
Dim x As Integerou
Dim rng As Range
Cordialement
Patrice
Nicolas dit toujours : « C'est facile quand on connait la réponse ! »
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 713
22 août 2010 à 12:12
22 août 2010 à 12:12
bonjour
Tu as comme souvent beaucoup de possibilités. En fonction de ta question, je t'en propose 2 :
Tu as une macro qui affecte une fonction à une cellule précise,
et tu as une fonction personnalisée qui est paramétrable et que tu peux utiliser autant que tu veux, là où tu veux : elle doit être dans un module.
Tu as comme souvent beaucoup de possibilités. En fonction de ta question, je t'en propose 2 :
Sub calc1() ' crée une formule de somme A1:A49 en A50 Range("A50").FormulaLocal = "=SOMME(A1:A49)" End Sub Function calc2(plage As Range) ' calcule la somme dela plage donnée ' dans la cellule où elle est mise calc2 = Application.WorksheetFunction.Sum(plage) End Function ' appel par =calc2(A1:A49) par exemple
Tu as une macro qui affecte une fonction à une cellule précise,
et tu as une fonction personnalisée qui est paramétrable et que tu peux utiliser autant que tu veux, là où tu veux : elle doit être dans un module.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
22 août 2010 à 12:50
22 août 2010 à 12:50
Salut gb,
On va dire que ta fonction personnalisée est là juste à titre d'exemple explicatif car sinon autant utiliser directement =somme(plage) ;-)
eric
On va dire que ta fonction personnalisée est là juste à titre d'exemple explicatif car sinon autant utiliser directement =somme(plage) ;-)
eric
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
22 août 2010 à 12:13
22 août 2010 à 12:13
Bonjour,
pas moyen de trouver ça sur le net....
Pourtant si tu recherches sur google 'vba declaration de variable' il y en a des réponses...
Et pour ton problème plusieurs façons d'y répondre.
Déjà en A50 il faut décider si tu veux y mettre une formule (dans ce cas tu utilises .FormulaR1C1="ta formule en texte avec les références au format R1C1" ou .Formula="ta formule en texte avec les références au format A1") ou le résultat.
Et pour déclarer c'est (entre autres) Dim ta_variable as type_de_ta_variable
ex:
dim i as integer
dim r as range
Si tu fais F1 sur Dim tu auras l'aide
Ex dans ton cas :
Worksheets("...") peut être omis si tu travailles sur la feuille active
Note que tu peux utiliser les fonctions de feuille avec
Application.nom_de_la_fonction_en_anglais(param1,param2,...)
ou bien
Application.WorksheetFunction.nom_de_la_fonction_en_anglais(param1,param2,...)
C'est ce que j'ai fait avec sum()
eric
pas moyen de trouver ça sur le net....
Pourtant si tu recherches sur google 'vba declaration de variable' il y en a des réponses...
Et pour ton problème plusieurs façons d'y répondre.
Déjà en A50 il faut décider si tu veux y mettre une formule (dans ce cas tu utilises .FormulaR1C1="ta formule en texte avec les références au format R1C1" ou .Formula="ta formule en texte avec les références au format A1") ou le résultat.
Et pour déclarer c'est (entre autres) Dim ta_variable as type_de_ta_variable
ex:
dim i as integer
dim r as range
Si tu fais F1 sur Dim tu auras l'aide
Ex dans ton cas :
Sub calc() Dim r As Range Set r = Worksheets("Feuil1").Range("A1:A49") Worksheets("Feuil1").Range("A50") = Application.Sum(r) End Sub
Worksheets("...") peut être omis si tu travailles sur la feuille active
Note que tu peux utiliser les fonctions de feuille avec
Application.nom_de_la_fonction_en_anglais(param1,param2,...)
ou bien
Application.WorksheetFunction.nom_de_la_fonction_en_anglais(param1,param2,...)
C'est ce que j'ai fait avec sum()
eric
nunnu27
Messages postés
20
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
22 août 2010
1
22 août 2010 à 12:35
22 août 2010 à 12:35
Bonjour gbinforme et eriiic,
Tout d'abord merci pour vos réponses rapide !
Je vais essayer ces codes afin de comprendre leur fonctionnement...
Merci encore pour votre aide !
n.b: je vous joints mon code complet dès qu'il fonctionne, je ne bascule donc pas encore le sujet comme "résolu".
Bonne journée et merci !
Cordialement
Tout d'abord merci pour vos réponses rapide !
Je vais essayer ces codes afin de comprendre leur fonctionnement...
Merci encore pour votre aide !
n.b: je vous joints mon code complet dès qu'il fonctionne, je ne bascule donc pas encore le sujet comme "résolu".
Bonne journée et merci !
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
nunnu27
Messages postés
20
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
22 août 2010
1
22 août 2010 à 20:08
22 août 2010 à 20:08
Re bonjour,
Tout d'abord, pardon patrice de t'avoir omis dans mon bonjour précédent...dsl
Ensuite, j'ai en fait utilisé le code de patrice et l'ai un peu modifié afin qu'il soit actif dès qu'une modification a lieu sur ma feuille excel .
Code:
ça fonctionne parfaitement !!! :)
Bref, encore merci pour votre aide !
Cordialement ;)
Tout d'abord, pardon patrice de t'avoir omis dans mon bonjour précédent...dsl
Ensuite, j'ai en fait utilisé le code de patrice et l'ai un peu modifié afin qu'il soit actif dès qu'une modification a lieu sur ma feuille excel .
Code:
Sub worksheet_change(ByVal target As Range) If Not Intersect(target, Range("E10:E59,H10:H59,K10:K59,N10:N59,Q10:Q59,T10:T59,W10:W59,Z10:Z59,AC10:AC59,AF10:AF59,AI10:AI59,AK10:AK59")) Is Nothing Then Range("E60").FormulaLocal = "=Somme(E1:E59)" Range("H60").FormulaLocal = "=Somme(H1:H59)" Range("K60").FormulaLocal = "=Somme(K1:K59)" Range("N60").FormulaLocal = "=Somme(N1:N59)" Range("Q60").FormulaLocal = "=Somme(Q1:Q59)" Range("T60").FormulaLocal = "=Somme(T1:T59)" Range("W60").FormulaLocal = "=Somme(W1:W59)" Range("Z60").FormulaLocal = "=Somme(Z1:Z59)" Range("AC60").FormulaLocal = "=Somme(AC1:AC59)" Range("AF60").FormulaLocal = "=Somme(AF1:AF59)" Range("AI60").FormulaLocal = "=Somme(AI1:AI59)" Range("AK60").FormulaLocal = "=Somme(AK1:AK59)" End If End Sub
ça fonctionne parfaitement !!! :)
Bref, encore merci pour votre aide !
Cordialement ;)
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
22 août 2010 à 21:44
22 août 2010 à 21:44
De rien, avec plaisir