ludo_wob
Messages postés18Date d'inscriptionlundi 30 janvier 2006StatutMembreDernière intervention12 avril 2006
-
7 avril 2006 à 13:31
micmerle
Messages postés32Date d'inscriptionmercredi 24 mars 2004StatutMembreDernière intervention 3 août 2006
-
12 avril 2006 à 14:21
bonjour
je veux créer une FONCTION, où je selectionnerais une colonne
et la fonction me donnerait la valeur de la cellule qui est colorée en jaune dans cette colonne (je precise il n´y a qu´une seule cellule jaune dans la colonne) puis je fais une multiplication avec une autre cellule où je connais son adresse
comment faire ?
j´ai la macro suivante qui fonctionne
mais je voudrais une fonction
Sub Farbig()
Dim i As Integer
For i = 1 To 9
If Cells(i, 10).Interior.ColorIndex = 6 Then
Cells(11, 10).Value = Cells(i, 10).Value * Cells(10, 10).Value
End If
Next
End Sub
le probleme que je rencontre c´est en faisant Function Farbig (.......) as string
que mettre dans les parentheses pour dire que je puisse selectionner une colonne
merci
A voir également:
Récupérer la valeur de l´unique cellule colorée d´une colonne
micmerle
Messages postés32Date d'inscriptionmercredi 24 mars 2004StatutMembreDernière intervention 3 août 2006 12 avril 2006 à 14:21
Salut,
Maximo71 a raison avec son bouton. Une fonction qui change la valeur d'une autre cellule qu'elle mm ne pourra pas tourner. Donc c'est le bouton qui déclenche une sub et pas une fonction (et tu écris où tu veux) ou la fonction et le résultat sera écrit dans la fonction et pas ailleurs
Michael
micmerle
Messages postés32Date d'inscriptionmercredi 24 mars 2004StatutMembreDernière intervention 3 août 2006 7 avril 2006 à 13:50
Salut,
(ByRef maSelection as Range) avec maSelection une sélection de cellule
et tu extraits ta colonne par
maColonne=maSelection .Row (ca marchera si tu as bien une ou plusieurs cellules mais sur une mm colonne
Sinon pourquoi tu ne mets pas juste un (ByVal maColonne as Integer) et quand tu l'appelles via une Worksheet, tu peux mettre
=Farbig(Column(A1)) ou Colonne(A1) en français ?
Le prob va etre le suivant: depuis une fonction, tu ne peux pas modifier une cellule (hors celle qui continet la fonction )donc ton code devra changer en:
'elle retournera 0 si elle trouve pas
Function Farbig(ByVal maColonne As Integer) as Long
Dim i As Integer
For i = 1 To 9
If Cells(i, maColonne ).Interior.ColorIndex = 6 Then
Farbig(11, maColonne ).Value = Cells(i, maColonne ).Value * Cells(10, maColonne ).Value
exit function
End If
Next
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 7 avril 2006 à 14:23
Re,
Si tu Expliques bien dès le début ton problème tu porras avoir une réponse claire...
"reexprime ma demande sous d´autres termes"...
Pourquoi ne pas l'avoir fait avant... tu aurais pu penser aux gens qui lisent et dépensent de leur temps (même si ils ne le sont pas obligés) à essayer de résoudre ton problème
Enfin bref.
@+, Julien Pensez: Moteur de Recherche, Réponse Acceptée
ludo_wob
Messages postés18Date d'inscriptionlundi 30 janvier 2006StatutMembreDernière intervention12 avril 2006 10 avril 2006 à 08:39
Je viens de tester ce que tu m´as proposé mais ca ne fonctionne toujours pas. Je ne comprends pas ce que tu veux dire par "lancer la macro". car en enregistrant le code que tu me proposes j´obtiens une fonction et non une macro. donc ´je selctionne ma colonne, puis je lance ma fonction mais j´obtiens toujours 0. ce qui ne correspond pas au resultat de mon operation
Tu selectionnes une colone dans laquelle il y a une case jaune qui
contient une valeur et une valeur dans la case 10, tu lance la macro
test25 et tu obtiendras le résultat de la multiplication dans la case
11. J'attire ton attention sur une évidence mais bon parfois, il
faut que tes cases contiennent des valeur numériques et pas du texte,
je sais c'est une évidence mais j'ai parfois bloqué pour moins
MAXIMO71
PS Si la réponse vous satistait
pensez à la valider
ludo_wob
Messages postés18Date d'inscriptionlundi 30 janvier 2006StatutMembreDernière intervention12 avril 2006 11 avril 2006 à 08:44
Salut Maximo71
merci beaucoup pour ton aide, j´ai maintenant compris comment ca fonctionne. c´est parfait. Je suis loin d´etre un expert en programmation, et ca me fait toujours plaisir d´avoir de l´aide
j´aurais une autre question:
avec cette macro je ne peux selectionner qu´une colonne puis je lance la macro et j´obtiens le resultat. Maintenant si je dois effectuer cette operation sur plusieurs colonnes, existe t´il une possibilité pour que je sélectionne des le debut 5, 6 voire plusieurs colonnes et en lancant la macro j´obtiendrai le resultat pour toutes mes colonnes ?
Deuxieme question:
Au debut j´avais imaginé faire en sorte que toute les cellules de la ligne 11 soient dotées d´une "fonction" c´est a dire genre
= Si de la ligne 1 à 9 il y a une case jaune, je prends sa valeur et je la multiplie par la valeur de la ligne 10
ainsi il serait surement possible d´avoir des valeurs actualisées de mon calcul lorsque je modifie la valeur de ma cellule jaune
est ce que tu me comprends ? et donc je voulais savoir si ca serait envisageable ?
MAXIMO71
Messages postés46Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention 7 juin 2007 11 avril 2006 à 21:20
La fonction utilise la selection comme zone de recherche, donc
normalement si tu en selectionnes plusieurs cela devrait fonctionner.
Autrement, tu peux définir la zone de recherche en utilisant un objet
range du genre Range("A1:J9") pour tester toutes les cases de la plages
A1 à J9, écrit de cette façon, la plage selectionnée correspond à A1
comme cellule en haut à gauche et J9 comme cellule en bas à droite, il
y a d'autre façon de faire mais celle ci est simple et te permet
d'appréhender les objets Range. Je te redonne le code modifié:
Sub test25()
Farbig
End Sub
Function Farbig() As Long
For Each c In Range("A1:J10") 'A correspond à la colone la plus à gauche que tu veux tester et J la plus à droite.
Pour ce qui concerne ton idée de formule du type =...., il n'est pas
possible de les utiliser dans ce cas car elles ne permettent pas de
tester autre chose que la valeur de la cellule (pas de mise en forme).
En revanche, tu peux mettre un bouton de commande dans ta barre de
bouton en utilisant outil/personnaliser/commande/macro. Cela
simplifiera l'utilisation de ta Macro.
Je dois vérifier quelque chose sur le site et je te donne plus d'éléments pour te simplifier la vie.
A+ et n'hésite pas à poser des questions mais fais attention quand on
met le doigt dans le developpement même à petit niveau, rien ne plus
t'arréter.
Dernier petit détail, peux tu valider la réponse, merci
MAXIMO71
PS Si la réponse vous satistait
pensez à la valider
MAXIMO71
Messages postés46Date d'inscriptionsamedi 25 mars 2006StatutMembreDernière intervention 7 juin 2007 11 avril 2006 à 21:37
C'est re moi pour te simplifier la manipulation de la Macro tu peux
créer un bouton sur ta feuille de calcul avec la barre d'outil Visual
Basic tu met un bouton sur ta feuille et clique droit pour visualiser
le code puis tu écris directement le code dans le bouton que tu crées.
Voila en espérant que tu vas tout comprendre et que tu vas atteindre ton objectif.
MAXIMO71
PS Si la réponse vous satistait
pensez à la valider
ludo_wob
Messages postés18Date d'inscriptionlundi 30 janvier 2006StatutMembreDernière intervention12 avril 2006 12 avril 2006 à 08:37
salut
j´ai testé ton code, et la modification ne change rien au resultat, c´est a dire que je n´obtiens le resultat de la multiplication uniquement pour la derniere colonne de ma selection.
j´ai tenté de modifier ton code, avec celui ci-dessous
Function couleur() As Long
Dim nbcol As Integer
Dim colo As Integer
nbcol = Worksheets(1).UsedRange.Columns.Count
For colo = 1 To nbcol
For Each c In Range(Cells(1, colo), Cells(9, colo)) 'A correspond à la colone la plus à gauche que tu veux tester et J la plus à droite.
If c.Interior.ColorIndex = 6 Then
col = c.Column
Cells(11, col).Value = c.Value * Cells(10, col).Value
Exit For
End If
Next c
Next colo
End Function
c´est a dire que pour chaque colonne je demande a faire la multiplication. D´apres mes premiers essais ca a l´air de fonctionner.
merci beaucoup pour ton aide. je n´ai pas beaucoup de connaissance en informatique mais c´est vrai que la logique informatique ca m´interesse et c´est aussi utile pour mon boulot.
autre chose: pour le bouton raccourci macro, c´est parfait.