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 :

fonction qui écrit dans des cellules [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    jc2
    jc2 est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 27
    Points : 33
    Points
    33
    Par défaut fonction qui écrit dans des cellules
    Bonjour,
    je voudrais écrire une fonction qui écrit dans un range de cellules les groupes auxquels appartient un utilisateur de l'AD et je voudrais en même temps que cette fonction me retourne le nombre de groupes trouvés.

    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
     
    Function dgnLdapUserGroups(sDomain1 As String, sDomain2 As String, sLogin, sRangeDestName As String) As String
     
        Dim sQuery, objUser, Group
        Dim sResult, arrMemberOf ', intPrimaryGroupID
        Dim nOffset
     
        DoEvents
    On Error GoTo Handle_Error
     
        ' recupere l'adspath du user
        sQuery = dgnLdapQueryLogin(sDomain1, sDomain2, sLogin, "adspath")
        If sQuery = "" Then
            dgnLdapUserGroups = ""
            Exit Function
        End If
     
        ' recupere l'objet user correspondant
        Set objUser = GetObject(sQuery)
     
        ' recupere la liste des groupes
        arrMemberOf = objUser.GetEx("memberOf")
     
        ' boucle sur les groupes
        sResult = ""
        nOffset = 0
        For Each Group In arrMemberOf
            Range("test").Offset(nOffset) = Group
            nOffset = nOffset + 1
        Next
     
        ' retour du resultat
        dgnLdapUserGroups = Format$(nOffset)
        Exit Function
     
    Handle_Error:
        dgnLdapUserGroups = ""
        MsgBox Err.Description
        Exit Function
    End Function
    J'appelle cette fonction dans une cellule. Quand la cellule est mise à jour et appelle la fonction, ça plante au niveau du :
    Range("test").Offset(nOffset) = Group
    avec l'erreur
    Erreur définie par l'application ou par l'objet
    Quelqu'un a une idée ?
    merci

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    bonjour,
    ça plante au niveau du :
    Range("test").Offset(nOffset) = Group
    pour répondre à ta question normal:
    Offset attends un nomnbre de ligne et un nombre de colonne, regarde l'aide d'excel à ce sujet et tu auras la réponse à ta question.
    exemple de l'aide d'excel:

    Exemple
    Cet exemple montre comment appliquer un décalage de cellule de trois colonnes vers la droite et de trois lignes vers le bas à la cellule active de la feuille « Sheet1 ».
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Visual Basic pour Applications
    Worksheets("Sheet1").Activate
    ActiveCell.Offset(rowOffset:=3, columnOffset:=3).Activate
    avec l'exemple ci-desssus tu peux simplifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(3, 3).Activate

  3. #3
    jc2
    jc2 est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 27
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    merci pour la réponse.

    j'ai modifié le code mais l'erreur est toujours la même. J'ai l'impression qu'excel refuse de modifier des cellules quand la fonction sert en même temps à retourner une valeur dans une cellule ?

  4. #4
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Bonjour,
    C'est tout à fait ça. Dans une fonction utilisée pour alimenter une cellule, on ne peut pas en modifier d'autres. Pour modifier la valeur de plusieurs cellules il faut passer par une procédure.

    Pour des informations plus détaillées :
    http://silkyroad.developpez.com/vba/fonctions/

    A la fin de l'introduction :
    Si vous souhaitez intégrer une fonction personnelle dans des formules de la feuille de calcul, il est très important de noter que Les instructions permettent uniquement de renvoyer une donnée dans la cellule. Ces instructions ne peuvent pas modifier les différents objets du classeur.

  5. #5
    jc2
    jc2 est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 27
    Points : 33
    Points
    33
    Par défaut
    merci. je vais transformer la fonction en procédure et je vais créer un bouton qui appelle la procédure

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/01/2015, 21h31
  2. Réponses: 9
    Dernier message: 21/06/2013, 16h02
  3. Appel fonction avec des paramètres se trouvant dans des cellules
    Par SI-SHARE dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2013, 10h02
  4. fonction qui écrit dans une barre de recherche sur internet
    Par ubssecurities dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/08/2008, 10h36
  5. [VBA-PP]fonction qui écrit un chiffre dans une cellule excel
    Par alpking dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 26/04/2006, 19h34

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