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 :

implementation d une fonction


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Par défaut implementation d une fonction
    Bonjour

    J essaie de faire une fonction sour VBA qui recopie des cellules suivant une condition, et je ne comprend pas le bug ( sous Excel OSX , tres peu de commande de debugage), Je suis debutant en VBa et je ne comprend pas ou est mon erreur..
    Est ce que quelqu un pourrait relire mon code et me dire ce qui ne va pas , svp ?

    merci
    --SSM

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Public Function ReportDateSelection(rgA, rgB, sDate, eDate) As Variant
     
        Dim result() As Integer
        Dim cnt As Integer
        Dim n As Integer
        Dim CallerColumn As Integer
        Dim CallerRow As Integer
     
        'first Cell where you want to insert the
        Dim resultCell As Range
     
     
        cnt = 0
        For n = 1 To rgA.Rows.Count
            If (rgA.Cells(n, 1).Value >= sDate) And (rgA.Cells(n, 1).Value <= eDate) Then
                cnt = cnt + 1
                ReDim Preserve result(1 To cnt)
                result(cnt) = n
            End If
        Next
     
     
        CallerColumn = Range(Application.Caller.Address).Column
        CallerRow = Range(Application.Caller.Address).Row
        If (cnt > 0) Then
            If (cnt > 1) Then
                For i = 2 To cnt
                    ActiveSheet.Cells(CallerRow + i -1, CallerColumn).Value = rgB(result(i)).Value
                Next i
            End If
     
            ReportDateSelection = rgB(result(1)).Value
    CallerColumn).Value
        Else
            GoTo ErrorHandler
        End If
     
        Exit Function
     
    ErrorHandler:
       MaxColumns = -1
    End Function

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ça nous aiderait si tu indiquais sur quelle ligne se produit l'erreur et le message que tu reçois.
    déjà tu peux mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                ReDim Preserve result(cnt)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Par défaut
    En fait il devrait reprendre l adresse de la cellule "Caller" et remplir tous les cellules en dessous avec les valeurs des addresses de rgB trouvees dans result().
    S il n y a qu un element trouve, il le renvoie dans le retour de fonction.

    Le programme stop a cette ligne et je ne comprend pas pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveSheet.Cells(CallerRow + i -1, CallerColumn).Value = rgB(result(i)).Value
    C est cette ligne la qui buggue

    Merci pour ton aide

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    bonjour,

    Si la fonction est destinée à être appelé depuis une feuille de calcul, la seule chose qu'elle peut faire c'est renvoyer un résultat à la cellule dans laquelle elle est inscrite.

    Elle ne peut en aucune facon modifier d'autres cellules.

    Cordialement,

    Tirex28/

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Par défaut
    Merci beaucoup,
    Je vois ou est l erreur alors : J essaie d ecrire dans les cellules en dessous.

    Y a t il un moyen de remplir les cellules en dehors de celle qui appelle ?( puisque ca ne marche pas avec les fonctions)

    --SSM

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Re,

    Pas d'autre issue que d'écrire une procédure classique, mais tu ne pourras pas l'appeler depuis une fonction de feuille de calcul.

    Tu peux éventuellement essayer d'utiliser les évènements de feuille de calcul Worksheet_Change et Worksheet_Calculate mais ce dernier n'ayant pas de paramètres ca risque de vite de tourner au cauchemar...

    Cordialement,

    Tirex28/

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Employer un autre nom de variable pour rgB, qui pourrait être confondue avec des méthodes/fonctions concernant les couleurs.
    Ce n'est qu'une idée..
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Implementer une fonction generique
    Par Seth77 dans le forum C#
    Réponses: 7
    Dernier message: 26/02/2007, 11h11
  2. [VB.Net] Comment implémenter une fonction BitWise ?
    Par graphicsxp dans le forum VB.NET
    Réponses: 6
    Dernier message: 20/04/2005, 15h52
  3. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22
  4. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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