yoyohft
Messages postés8Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention28 mars 2006
-
25 mars 2006 à 12:57
yoyohft
Messages postés8Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention28 mars 2006
-
28 mars 2006 à 20:05
Bonjour à tous
Je ne connais rien ( ou presque ) en vba et je dois programmer une fonction vba qui est essentielle pour moi:
on m'a donné comme cahier des charges: connaissant les données L1 C1 L2 C2 comme arguments de ma fonction ( plage?) je dois renvoyer l'adresse de la plage de cellule L1C1: L2C2 qui puisse être utilisé dans la feuille excel avec la fonction NB.VIDe par exemple. En fait je dois utiliser des formules du style NB.VIDE(plage(cellule("contenu";D2)cellule("contenu";D3);cellule("contenu";E2);cellule("contenu";E3)))
Je n'y arrive pas aidez moi svp
Un grand merci d'avance si quelqu'un peut m'aider!!!!!!!
Ayant environ 3000 calculs à faire sur des plages différentes et des feuilles différentes je voulais que ma fonction plage me renvoie l'adresse du type K15:K41 afin que je puisse la combiner avec des fonctions du type moyenne/ NB.VIDE/ NB.SI etc...
J'espère avoir gagné en clarté pour une fois mais quelque chose me dit que c'est po le cas!
Si quelqu'un peut m'aider à résoudre mon pb merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
michelxld
Messages postés402Date d'inscriptionvendredi 6 août 2004StatutMembreDernière intervention12 octobre 200832 25 mars 2006 à 18:37
bonsoir
tu peux essayer
Sub Main()
Dim tempC As Integer, tempN As Integer, tempM As Integer
tempC = Application.InputBox(prompt:="Indiquez le Numero de colonne", Type:=2)
tempN = Application.InputBox(prompt:="Indiquez le numero de la 1ere ligne", Type:=2)
tempM = Application.InputBox(prompt:="Indiquez le numero de la derniere ligne", Type:=2)
MsgBox Plage(tempC, tempN, tempM)
End Sub
Function Plage(tempC, tempN, tempM) As String
Plage = Range(Cells(tempN, tempC), Cells(tempM, tempC)).Address
End Function
yoyohft
Messages postés8Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention28 mars 2006 25 mars 2006 à 19:51
Je viens d'essayer mais elle ne donne pas tout à fait ce que je voulais mais ca avance!
Je m'explique: lorsque je lance plage(11;15;41) elle me renvoie bien $K$15:$K$41 mais lorsque je l'imbrique avec une autre fonction ( NB.VIDE(plage(11;15;41)) par exemple), il me reponds #VALEURS
Que faut-il faire pour arranger cela
Encore merci!
michelxld
Messages postés402Date d'inscriptionvendredi 6 août 2004StatutMembreDernière intervention12 octobre 200832 25 mars 2006 à 20:46
bonsoir
je me semble que tu essayes de recéer la fonction que je t'ai proposé dans mon 1er message ...
Sub Main()
Dim tempC As Integer, tempN As Integer, tempM As Integer
tempC = Application.InputBox(prompt:="Indiquez le Numero de colonne", Type:=2)
tempN = Application.InputBox(prompt:="Indiquez le numero de la 1ere ligne", Type:=2)
tempM = Application.InputBox(prompt:="Indiquez le numero de la derniere ligne", Type:=2)
yoyohft
Messages postés8Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention28 mars 2006 26 mars 2006 à 09:54
Merci pour cette fonction
Est ce qu'il est possible, au lieu d'en afficher le résultat, de l'affecter à une cellule. En fait, si je comprends bien, lorsque la fonction renvoie l'addresse $L$15:$L$41, c'est une addresse acceptée par vba mais qui n'est pas reconnue comme une plage de cellule quand on l'utilise dans la feuille excel: est-il possible de transformer l'addresse string pour l'utiliser directement dans les fonctions sous la feuille excel?
mais je doute que cela réponde à ta demande ,car j'ai beaucoup de mal à comprendre ce que tu veux réaliser , nottament cette phrase :
"est-il possible de transformer l'addresse string pour l'utiliser directement dans les fonctions sous la feuille excel"
yoyohft
Messages postés8Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention28 mars 2006 26 mars 2006 à 11:43
Bonjour
Effectivement j'ai du mal à me faire comprendre et je te remercie sincerement de continuer à essayer de me depanner. Je ne sais pas si c'est possible mais j'aimerais t'envoyer une partie du fichier afin que tu puisses mieux comprendre ce que je dois faire. Le seul pb est que je ne sais pas comment te faire parvenir ces informations
Les cellules D2 D3 D4 et D5 contiennent les ligneqs de référence pour les plages A1 et A2 et bien sur celles ci varient à chaque feuille de calcul. La colonne H contient la mùeême chose pour les plages B1 B2
Comme vous le verrez plus haut, la fonction plage renvoie des adresses du style $L$15:$L$41 valable en vba mais pas pour excel. A ce propos existe t'il un type vba qui remplacerait "As range" par " as Xlrange" ou "XLaddress"
Pitié aideeeeezzzzzzz moiiiiiiiii
michelxld
Messages postés402Date d'inscriptionvendredi 6 août 2004StatutMembreDernière intervention12 octobre 200832 28 mars 2006 à 19:59
bonsoir
tu insères cette fonction dans un module
Function NBVide_Plage(NumDebutLigne, NumFinLigne, NumColonne) As Integer
Dim Plage As Range
Set Plage = Range(Cells(NumDebutLigne, NumColonne), Cells(NumFinLigne, NumColonne))
NBVide_Plage = Application.WorksheetFunction.CountBlank(Plage)
End Function
ensuite dans une cellule , la formule
=NBVide_Plage(2;10;1)
2 correspond à la 1ere ligne de la plage à tester
10 est la derniere ligne de la plage
1 est le numero de colonne
si ce n'est pas ça , j'abandonne car je ne comprend rien à tes messages ...désolé ...
yoyohft
Messages postés8Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention28 mars 2006 28 mars 2006 à 20:05
Merci pour toute l'aide que tu m'as apportée. Je pense que je vais me débrouiller avec cette fonction et essayer de l'adapter aux fonctions NB.SI ET MOYENNE
Desole de ne pas toujours etre clair ca n'est pas facile pour moi je n'y connais rien en vba!