[Excel] Appel function et objet
Résolu
deniooo
Messages postés
36
Statut
Membre
-
deniooo Messages postés 36 Statut Membre -
deniooo Messages postés 36 Statut Membre -
Bonjour,
J'ai un soucis sur l'utilisation des fonction sous excel.
Voici mon code de test :
Sub beurk()
Dim cel As Range
Dim cels As Range
Set plageC = Application.ActiveWorkbook.ActiveSheet.UsedRange.Columns("A").Cells
For Each cel In plageC
totop = cel.Select
toto (totop)
Next
End Sub
Function toto(ByVal n As Range)
n.Value = "gj"
toto = MsgBox("up")
End Function
Je met en variable les cellule d'une colonne, puis je les parcours et à chaque cellule j'essaye de lui appliquer la function toto.
Bon but ultime, n'est pas de conquérir le monde, mais d'appeler un fonction de test de cellule dans une boucle de parcours comme celle ci.
Or avec ce code ci excel me répond "objet requis" sur la ligne de mon appel de la fonction toto quand je lui passe totop en paramétre.
Quelqu'un peut m'expliquer en quoi je me plante ?
merci.
J'ai un soucis sur l'utilisation des fonction sous excel.
Voici mon code de test :
Sub beurk()
Dim cel As Range
Dim cels As Range
Set plageC = Application.ActiveWorkbook.ActiveSheet.UsedRange.Columns("A").Cells
For Each cel In plageC
totop = cel.Select
toto (totop)
Next
End Sub
Function toto(ByVal n As Range)
n.Value = "gj"
toto = MsgBox("up")
End Function
Je met en variable les cellule d'une colonne, puis je les parcours et à chaque cellule j'essaye de lui appliquer la function toto.
Bon but ultime, n'est pas de conquérir le monde, mais d'appeler un fonction de test de cellule dans une boucle de parcours comme celle ci.
Or avec ce code ci excel me répond "objet requis" sur la ligne de mon appel de la fonction toto quand je lui passe totop en paramétre.
Quelqu'un peut m'expliquer en quoi je me plante ?
merci.
A voir également:
- [Excel] Appel function et objet
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Si et ou excel - Guide
- Appel privé - Guide
4 réponses
bonjour
Tu sélectionne une cellule qui est un objet et tu le définis comme un range : excel le trouve incohérent.
Tu sélectionne une cellule qui est un objet et tu le définis comme un range : excel le trouve incohérent.
Bonjour,
Ta macro déboguée,
Pour ta ligne activemachin.activemachin etc.. pas besoin d'enfoncer les portes ouvertes :D
A+
EDIT:
Quand tu sélectionne une colonne entière Cel renvoi l'adresse de la colonne et pas celle d'une cellule
Ta macro déboguée,
Pour ta ligne activemachin.activemachin etc.. pas besoin d'enfoncer les portes ouvertes :D
Sub Test()
Dim cel As Range
Dim Lig As Long
Dim Col As Integer
Col = ActiveCell.Column
Lig = Range(Cells(1, Col), Cells(1, Col)).SpecialCells(xlCellTypeLastCell).Row
Range(Cells(1, Col), Cells(Lig, Col)).Select
For Each cel In Selection
'Une fonction doit être appellé soit par une variable ou par Call
Call toto(cel)
Next
End Sub
Function toto(ByRef n As Range)
n.Value = "gj"
toto = MsgBox("up")
End Function
A+
EDIT:
Quand tu sélectionne une colonne entière Cel renvoi l'adresse de la colonne et pas celle d'une cellule
bonjour
Quand on utilise une fonction c'est pour exploiter le résultat et donc l'appel se fait :
résultat = fonction(paramètres)
Une fonction n'est pas faite pour faire du traitement d'affichage de message ou autre.
Si tu veux faire de l'affichage ou autre, utilises une procédure "sub" que tu appelles par call.
Quand on utilise une fonction c'est pour exploiter le résultat et donc l'appel se fait :
résultat = fonction(paramètres)
Une fonction n'est pas faite pour faire du traitement d'affichage de message ou autre.
Si tu veux faire de l'affichage ou autre, utilises une procédure "sub" que tu appelles par call.
Merci beaucoup pour vos remarques/aides
j'en ai tiré le code suivant :
Sub beurk()
Dim cel As Range
Dim cels As Range
Set plageC = Application.ActiveWorkbook.ActiveSheet.UsedRange.Columns("A").Cells
For Each cel In plageC
cel.Value = toto(cel)
Next cel
End Sub
Function toto(ByVal n As Range)
toto = "gj mec"
End Function
j'ai réussi à faire ce dont j'avais besoin, je résonnais à l'envers !
(probléme résolu !)
j'en ai tiré le code suivant :
Sub beurk()
Dim cel As Range
Dim cels As Range
Set plageC = Application.ActiveWorkbook.ActiveSheet.UsedRange.Columns("A").Cells
For Each cel In plageC
cel.Value = toto(cel)
Next cel
End Sub
Function toto(ByVal n As Range)
toto = "gj mec"
End Function
j'ai réussi à faire ce dont j'avais besoin, je résonnais à l'envers !
(probléme résolu !)