[Excel] Macros éléments variables

Fermé
JISSE - 8 déc. 2009 à 11:20
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 - 12 déc. 2009 à 17:26
Bonjour,
Je voudrais remplacer les macros suivantes par une seule, avec entrée des variables:

Function sommeNo(x, y)
sommeNo = x + y
End Function

Sub Somme35()
Cells(3, 5) = sommeNo(3, 5)
End Sub
Sub Somme45()
Cells(4, 5) = sommeNo(4, 5)
End Sub
Sub Somme87()
Cells(8, 7) = sommeNo(8, 7)
End Sub
Sub Somme91()
Cells(9, 1) = sommeNo(9, 1)
End Sub

Merci pour toute aide
A voir également:

3 réponses

tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
8 déc. 2009 à 11:39
bonjour,
une macro avec des 'entrées variables' doit etre appellée en passant les valeurs, donc 2 macros :s
je propose de selectionner la zone de cellules puis executer la macro suivante
Sub sommeligcol()
For Each c In Selection
c.Value = c.Row + c.Column
Next c
End Sub
si ça ne convient pas peux tu stp expliquer ce que tu voudrais comme 'variables' ?
0
Merci mille fois, ça m'aidera pour autre chose.
Pour répondre à ta question, j'aimerais rentrer x=... et y=... pour que la macro fonctionne.
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
10 déc. 2009 à 17:26
re,
Sub sommeligcol()
lig = CInt(InputBox("entrez le numéro de ligne"))
col = CInt(InputBox("entrez le numéro de colonne"))
Cells(lig, col).Value = lig + col
End Sub
voilà :)
0
Merci bien, ça me dépanne...
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
12 déc. 2009 à 17:26
De rien,
sinon pour plusieurs cellules, tu peux boucler comme ça:
Sub sommeligcol()
While Not rep = vbNo
lig = CInt(InputBox("entrez le numéro de ligne"))
col = CInt(InputBox("entrez le numéro de colonne"))
Cells(lig, col).Value = lig + col
rep = MsgBox("Continuer ?", vbYesNo)
Wend
End Sub
0