IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur #VALEUR! sur une fonction perso de recherche


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut Erreur #VALEUR! sur une fonction perso de recherche
    Bonjour à tous,

    Je suis en train d'essayer de créer une fonction que je pense assez simple mais qui pourtant ne fonctionne pas.
    Cette fonction, une fois rentrée dans une cellule, doit rechercher un critère dans un autre onglet et renvoyer la date (contenue dans une colonne de ce nouvel onglet) qui correspond au critère trouvé.
    Comme je me rends compte que mon explication est laborieuse je vais essayer de vous donner un exemple avant de vous montrer mon code.

    Dans mon onglet 1 j'ai un tableau avec en 1ère colonne des noms et dans les 10 colonnes qui suivent je veux mettre ma fonction qui renverra une date.
    Dans mon onglet 2 j'ai un autre tableau contenant dans une colonne des noms, et dans une autre des dates entrées manuellement. Les autres colonnes de ce tableau ne m'intéressent pas.

    Donc admettons que dans mon onglet 1 sur la ligne "Jean MARCEL" je mette ma fonction, je veux que celle-ci me retourne les dates contenues dans l'onglet 2 associées à Jean MARCEL. Je sais qu'il existe la fonction RECHERCHEV mais celle-ci se contente de retourner la première valeur trouvée. Hors ma fonction doit faire ceci : dans la première colonne des dates, on trouve la première date trouvée, dans la deuxième colonne la deuxième date etc.

    Et pour en finir avec le blabla voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Option Base 1
     
    Public Function AUDIT()
    Dim j As Integer
    Dim liste(10) As Date
     
    j = 1
     
    With Worksheets(2).Range("C:C")
        Set a = .Find(Cells(Application.ThisCell.Row, 1), Range("C4"), xlFormulas, xlPart, xlByRows, xlNext)
        If Not a Is Nothing Then
            debut = a.Address
            Do
                liste(j) = Worksheets(2).Cells(a.Row, 7)
                j = j + 1
                Set a = .FindNext(a)
            Loop While Not a Is Nothing And a.Address <> debut
        Else
            AUDIT = ""
        End If
    End With
     
    AUDIT = liste(Application.ThisCell.Column - 1)
     
    End Function

    J'espère que vous pourrez m'aider sur ce coup

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Une fonction modifie une cellule, pas une colonne, ce que tu veux doit être fait par une procédure. Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Je sais bien, mais je ne cherche pas à modifier une colonne. Je cherche à modifier une cellule

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Ta fonction a pour vocation de modifier plusieurs cases. Cela ne marche pas. Encore une fois, fais un sub.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Je ne comprends pas pourquoi tu dis ça. Ma fonction retourne une seule valeur dans une seule cellule, elle n'en modifie pas plusieurs

    Elle renvoie une date qu'elle va chercher dans une cellule.

    D'ailleurs je sais que le problème vient de la recherche : si je mets tout le paragraphe with en commentaire et que j'initialise ma liste à la date d'aujourd'hui par exemple, je n'ai plus d'erreur : ma fonction affiche bien la date d'aujourd'hui.

    Je veux vraiment éviter de passer par une sub.

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Envoi ton classeur

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Voilà un classeur simplifié mais qui met bien en évidence ce que je veux faire
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/12/2012, 17h50
  2. Erreur aléatoire sur une fonction
    Par defluc dans le forum Firebird
    Réponses: 8
    Dernier message: 10/09/2007, 17h34
  3. erreur syntaxe sur une fonction pow
    Par superyoury dans le forum C
    Réponses: 3
    Dernier message: 10/06/2007, 19h16
  4. erreur sur une fonction
    Par rimbaut dans le forum C
    Réponses: 3
    Dernier message: 01/04/2006, 18h28
  5. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 22h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo