Erreur incompatibilité de type avec une fonction [Résolu]

Messages postés
13
Date d'inscription
mercredi 22 mai 2019
Statut
Membre
Dernière intervention
13 juin 2019
-
Bonjour,

j'ai un problème qui devient récurrent dans tout ce que j'essaie de faire : excel me signale une "incompatibilité de type". Je ne parviens pas à trouver l'incompatibilité en question.

Je testai cette procédure :
Sub Test()
Range("F2").Value = Application.Sum(Range(RefCell(Sheets("Evènements"), "coucou")).EntireColumn)
End Sub

RefCell étant une fonction que j'ai créé et qui se trouve si dessous (il y avait peut-être plus simple mais ça fonctionne !) :

'Fonction qui trouve la référence de la cellule contenant la valeur (TEXT !) cherchée (fonctionne uniquement pour une seule occurrence de la valeur)
Function RefCell(MonTableau As Range, Text As String)
    Dim MaCellule As Range
    For Each MaCellule In MonTableau
        If InStr(1, MaCellule, Text) = 1 Then
            RefCell = MaCellule.Address
            Exit Function
        End If
    Next MaCellule
End Function

L'objectif est de faire la somme de toutes les valeurs d'une colonne, en donnant la plage dans laquelle doit se trouver la colonne et son nom (donc valeur dans sa première cellule).
Je souhaiterais ensuite faire une boucle me permettant d’exécuter cela sur une liste de feuilles mais on va y aller étape par étape.

Merci par avance pour votre aide !
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
589
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
26 juin 2019
46
1
Merci
Bonjour,
tu écris
MonTableau As Range
et tu lui envoies le nom d'une feuille dans tes arguments
Sheets("Evènements")
une feuille n'est pas un range à mon avis ton incompatibilité de type se trouve ici..

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 65172 internautes nous ont dit merci ce mois-ci

louloubru
Messages postés
13
Date d'inscription
mercredi 22 mai 2019
Statut
Membre
Dernière intervention
13 juin 2019
-
Merci beaucoup,
j'ai changé Range en Worksheets mais ça ne fonctionne pas non plus ...
Toujours erreur de compatibilité de type.

Je remets le code :

Fonction :

Function RefCell(MonTableau As Worksheets, Text As String)
    Dim MaCellule As Range
    For Each MaCellule In MonTableau
        If InStr(1, MaCellule, Text) = 1 Then
            RefCell = MaCellule.Address
            Exit Function
        End If
    Next MaCellule
End Function




Procédure utilisant la fonction :

Sub Test()
Range("F2").Value = Application.Sum(Range(RefCell(Sheets("Evènements"), "zrfz")).EntireColumn)
End Sub




Merci par avance !
Commenter la réponse de fabien25000
Messages postés
589
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
26 juin 2019
46
1
Merci
une base comme celle ci me semble plus correct :
Function RefCell(varSheet As Worksheets, Text As String)
    Dim MonTableau As Range

    MonTableau=Worksheets(varsheet).Range("A1:A10") 'à toi de définir la plage correcte

    For Each Cell In MonTableau
        If InStr(1, Cell, Text) = 1 Then
            RefCell = Cell.Address
            Exit Function
        End If
    Next 
End Function

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 65172 internautes nous ont dit merci ce mois-ci

louloubru
Messages postés
13
Date d'inscription
mercredi 22 mai 2019
Statut
Membre
Dernière intervention
13 juin 2019
-
C'est tout bon merci !
Commenter la réponse de fabien25000