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 :

Macro pour récupérer identifiant manager (n+1) et collaborateur (n) via boucle for next [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 2
    Points
    2
    Par défaut Macro pour récupérer identifiant manager (n+1) et collaborateur (n) via boucle for next
    Bonjour,

    J'aimerais via une macro vba (boucle je crois) récupérer pour chaque identifiant son numero d'user ainsi que ceux de ses collaborateurs si ce dernier est manager (N+1).

    Voici en image ce que j'aimerais avoir (colonne G)

    Nom : 2017-11-17_22h49_22.png
Affichages : 170
Taille : 9,8 Ko

    Voici le code que j'ai commencé à réalisé mais il ne récupère que l'identifiant de l'user et non celui de ses collaborateur si N+1

    Je vous remercie par avance de votre aide sur ce sujet.
    Cordialement

    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
    Sub Concatenation()
    ' Déclaration des variables
     
    Dim Lig1 As Long, derlig1 As Long
    Dim Lig2 As Long
     
    ' activation de la feuille dvp
    Sheets("dvp").Select
    derlig1 = Range("A65536").End(xlUp).Row
     
    For Lig1 = 2 To derlig1
     
    ' scrutation des cellules de la colonne "J" afin de connaitre le poste
    ' si le poste est N
        If Not (Cells(Lig1, 5) Like "") Then
            a = Cells(Lig1, 2).Value 'valeur du N+1 retenue
            Cells(Lig1, 7).Value = "'" & Cells(Lig1, 5).Value & "'" ' Colle la valeur de la colonne 10 (user) dans la colonne 12 (qui)
        End If
     
       For Lig2 = 2 To derlig 'boucle qui passe sur toutes les lignes de 2 à la dernière
     
        If Cells(Lig2, 2).Value = a Then
        b = Cells(Lig2, 5).Value
        Cells(Lig2, 7).Value = "'" & b & "','" & Cells(Lig1, 5).Value & "'"
        End If
     
        Next Lig2
     
     
    Next Lig1
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    C'est tout simple,tu commences à analyser un code écrit par quel qu'un d'autre et qui ne fonctionne pas!
    Comme tu n'as vraiment aucune idée des tenants et aboutissant tu attends que le rédacteur du poste te donnes des précision!

    C'est le travail des anthropologues d'analyser le reliques, je ne ferais pas un autopsie de ton code! Explique le problème!

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Bonjour.

    Le code vient bien de moi mais grace effectivement à des briques de codes que j'avais fait en formation VBA il y a quelques années. Ceci étant dit ma question serait de savoir comment récupérer l identifiant des utilisateurs de chaque manager pour les copiés les uns à la suite séparés par une virgule dans la cellule du manager comme sur l'image jointe précédemment.

    Je suis conscient que vous n'allez pas forcément analyser le code mais peut être juste m'expliquer ou me proposer une solution pour imbriquer plusieurs boucles.

    Vous remerciant par avance

    Cordialement

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    en formation VBA il y a quelques années
    Tu es vraiment étudiant ?

    Pour comprendre les boucles, je te conseille la lecture de ce tutoriel La gestion des boucles dans Excel
    Pour exporter suivant conditions je te conseille la méthode AdvancedFilter (Filtre avancés d'excel). A lire Les filtres avancés ou élaborés dans Excel
    Pour placer une suite de valeurs séparées par un caractère de séparation dans une cellule, tu peux utiliser la fonction Join (Split à étudier également) dont tu trouveras le détail dans ce tutoriel Conceptualisation des variables tableau en VBA et Application à l'optimisation du code sous Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    si la case N+1 n'est pas vide alors chercher le N+1 dans la colonne Users via la simple fonction de feuille de calculs   EQUIV   !
    Consulter l'aide d'Excel quant à l'utilisation de cette fonction.   Utiliser Application.Match en VBA.
    Il est alors facile avec le résultat de cette fonction d'éditer la cellule correspondante et de lui ajouter une virgule et l'User

    ___________________________________________________________________________________________________________
    Je suis Paris, New-York, Mogadicio, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Tu es vraiment étudiant ?

    ahah non, mais ma fonction n'était pas présente dans la liste!

    Pour comprendre les boucles, je te conseille la lecture de ce tutoriel La gestion des boucles dans Excel
    Pour exporter suivant conditions je te conseille la méthode AdvancedFilter (Filtre avancés d'excel). A lire Les filtres avancés ou élaborés dans Excel
    Pour placer une suite de valeurs séparées par un caractère de séparation dans une cellule, tu peux utiliser la fonction Join (Split à étudier également) dont tu trouveras le détail dans ce tutoriel Conceptualisation des variables tableau en VBA et Application à l'optimisation du code sous Excel
    Merci pour les différents liens. Je regarderais tout ça avec attention.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Bonjour,

    si la case N+1 n'est pas vide alors chercher le N+1 dans la colonne Users via la simple fonction de feuille de calculs   EQUIV   !
    Consulter l'aide d'Excel quant à l'utilisation de cette fonction.   Utiliser Application.Match en VBA.
    Il est alors facile avec le résultat de cette fonction d'éditer la cellule correspondante et de lui ajouter une virgule et le N+1 …

    ___________________________________________________________________________________________________________
    Je suis Paris, New-York, Mogadicio, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

    Bonjour,

    ce que je souhaite faire est plutôt l'inverse: je souhaite ajouter dans la ligne du manager "a" (qui est N+1) les valeurs (identifiants) des users (N) qui ont comme N+1 le manager "a"

    Exemple:
    si louis a comme poste N et que son N+1 est Robert, la valeur collé seulement est = id de louis
    si andré a comme poste N et que son N+1 est Robert, la valeur collé est seulement = id de andré
    si Robert a comme poste N+1 et que son N+1 est Joseph, la valeur collé sur sa ligne est = id de robert, id de louis, id de andré
    Si joseph a comme poste N+1, (et personne au dessus de lui = c'est donc le big boss ) la valeur collé sur sa ligne est = id de joseph , id de robert (soit son N-1) et donc id de louis, id de andré (qui sont rattaché à Robert, qui lui meme est sous Joesph, soit ses N-2).

    Je ne suis pas convaincu qu'avec la fonction Equiv j'arriverais à cela aisément. Idem avec les filtres élaborés...

    Je pensais fonctionner avec les boucles mais je bloque vraiment sur la logique et ce que je dois récupérer en 1er: valeur de Joseph, robert ou louis?

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Oui effectivement ce n'est pas le N+1 à ajouter mais bien le User après la virgule; sinon ma proposition reste valable !

    Déjà essayer la fonction EQUIV directement dans une cellule : si le résultat ne te parle pas (pourtant enfantin)
    alors passe à une autre solution.   Mais je n'en proposerais pas d'autre car c'est la plus simple
    et ayant déjà fait ses preuves dans de nombreuses discussions de ce forum !

    Edit :   en appliquant le B-A-BA d'Excel - formules - cela ne requière pas plus d'une dizaine de lignes de code …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Pb résolu sans équiv, sans filtre élaboré... mais uniquement avec des boucles.

    Je vous remercie néanmoins pour vos différentes pistes de solution.

    Voici le code utilisé si jamais cela peut servir pour d'autres utilisateurs se posant la même question.

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    Sub SearchDroit()
    '-------------------------
    'Déclaration des variables
    '-------------------------
    Dim NbLignes As Integer, NbColonnes As Integer
    Dim i As Integer, j As Integer, k As Integer, m As Integer, n As Integer, p As Integer, q As Integer, u As Integer, v As Integer, w As Integer, z As Integer
    Dim NumUser As String, NumUserInf1 As String, NumUserInf2 As String, NumUserInf3 As String, NumUserInf4 As String, NumUserInf5 As String
    Dim NumUserInf6 As String, NumUserInf7 As String, NumUserInf8 As String, NumUserInf9 As String, NumUserInf10 As String
    Dim MonTab()
    '----------------------------
    'Initialisation des variables
    '----------------------------
    Sheets("Dvp").Select
    NbLignes = Range("A65000").End(xlUp).Row
    NbColonnes = Range("A1").End(xlToRight).Column
    MonTab = Range(Cells(1, 1), Cells(NbLignes, NbColonnes)).Value
    Range(Cells(2, 12), Cells(NbLignes, 12)).ClearContents
    '--------------------------------------------
    'Recherche des dépendances (limité à 10 rangs
    '--------------------------------------------
    For i = 2 To UBound(MonTab, 1)
        If MonTab(i, 7) = "" Then GoTo Suite
        NumUser = MonTab(i, 7)
        Result = NumUser
        For j = 1 To UBound(MonTab, 1)
            If MonTab(j, 2) = NumUser Then
                NumUserInf1 = MonTab(j, 7)
                Result = Result & "," & NumUserInf1
                For k = 1 To UBound(MonTab, 1)
                    If MonTab(k, 2) = NumUserInf1 Then
                        NumUserInf2 = MonTab(k, 7)
                        Result = Result & "," & NumUserInf2
                        For m = 1 To UBound(MonTab, 1)
                            If MonTab(m, 2) = NumUserInf2 Then
                                NumUserInf3 = MonTab(m, 7)
                                Result = Result & "," & NumUserInf3
                                For n = 1 To UBound(MonTab, 1)
                                    If MonTab(n, 2) = NumUserInf3 Then
                                        NumUserInf4 = MonTab(n, 7)
                                        Result = Result & "," & NumUserInf4
                                        For p = 1 To UBound(MonTab, 1)
                                            If MonTab(p, 2) = NumUserInf4 Then
                                                NumUserInf5 = MonTab(p, 7)
                                                Result = Result & "," & NumUserInf5
                                                For q = 1 To UBound(MonTab, 1)
                                                    If MonTab(q, 2) = NumUserInf5 Then
                                                        NumUserInf6 = MonTab(q, 7)
                                                        Result = Result & "," & NumUserInf6
                                                        For u = 1 To UBound(MonTab, 1)
                                                            If MonTab(u, 2) = NumUserInf6 Then
                                                                NumUserInf7 = MonTab(u, 7)
                                                                Result = Result & "," & NumUserInf7
                                                                For v = 1 To UBound(MonTab, 1)
                                                                    If MonTab(v, 2) = NumUserInf7 Then
                                                                        NumUserInf8 = MonTab(v, 7)
                                                                        Result = Result & "," & NumUserInf8
                                                                        For w = 1 To UBound(MonTab, 1)
                                                                            If MonTab(w, 2) = NumUserInf8 Then
                                                                                NumUserInf9 = MonTab(w, 7)
                                                                                Result = Result & "," & NumUserInf9
                                                                                For z = 1 To UBound(MonTab, 1)
                                                                                    If MonTab(z, 2) = NumUserInf9 Then
                                                                                        NumUserInf10 = MonTab(z, 7)
                                                                                        Result = Result & "," & NumUserInf10
                                                                                    End If
                                                                                Next z
                                                                            End If
                                                                        Next w
                                                                    End If
                                                                Next v
                                                            End If
                                                        Next u
                                                    End If
                                                Next q
                                            End If
                                        Next p
                                    End If
                                Next n
                            End If
                        Next m
                    End If
                Next k
            End If
        Next j
        Cells(i, 12).Value = Result
    Suite:
    Next i
     
    End Sub

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Plus de 80 lignes de code alors qu'avec le B-A-BA d'Excel il n'en faut même pas 10 ‼

    Edit
    : j'ai retiré mon code - utilisant une seule boucle - car le tien déclenche un message d'erreur avec l'exemple initial !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Oui 80 lignes mais ce sont grosso modo 4-5 lignes qui sont répétées...
    Après je ne doute pas que votre code l'aurait fait en 10 lignes (je suis quand même preneur pour comprendre la logique que vous auriez utilisée avec equiv et filtre avancée en mode VBA).
    La personne qui m'a aidé sur ce code a répondu à mon besoin que j'avais pourtant bcp moins bien formulé que sur ce forum (simple conversation orale de 2min). Il a su comprendre sans juger mon bout de code déjà créé et ne m'a pas pris de haut comme ici ou ma 1ere venue sur ce forum m'a surpris. Je ne pensais pas qu'un forum était le lieu pour étaler sa science et ses compétences au yeux des personnes comme moi qui essaye d'avoir un peu d'aide communautaire sans être jugé sur ma compétence mais bien d'apporter des solutions sans juger. Oui je reprend des bouts de code; oui la solution fait 80 lignes mais c'est en observant la logique de 80lignes de qq1 qui m'aide que j'apprends. Vos seuls messages ont été de m'indiquer que je ne connaissais pas le baba d'excel ou que j'étais buté sur les boucles. Je ne comprend pas par exemple la moquerie du dernier message par rapport au nb de lignes de codes. Je ne vous oblige pas à me donner réponses surtout si c'est pour me dire que vous n'allez pas lire mon code en détail ou que ce dernier fait 80lignes alors que vous l'auriez fait en 5.

    Les actes comptent plus que les paroles.

    Bonne soirée.

  12. #12
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Citation Envoyé par louis.diretudes Voir le message
    Je ne pensais pas qu'un forum était le lieu pour étaler sa science
    Je n'ai pas étalé ma science justement en retirant mon code car le tien ne fonctionne déjà pas avec l'exemple initial !
    (Même sans message d'erreur une fois adapté il n'y a aucun résultat …)
    Peut-être ton classeur de travail ne correspond pas à l'exemple présenté initialement ?!
    Dans ce cas joindre un classeur exemple en .xlsx (donc sans macro) afin que je puisse déjà tester ton code …

    C'est pourtant extrêmement simple juste en reproduisant le résultat affiché initialement via de simples formules
    la logique étant du niveau d'un gamin en fin de primaire début de collège, le B-A-BA d'Excel !
    Une fois ces formules réalisées, il est facile de réaliser un algorithme les reproduisant par code
    en à peine une dizaine de lignes et une seule et unique boucle.   Penser Excel Avant VBA …

    Si tu avais au moins tenté les formules et après les avoir postées évidemment j'aurais déjà proposé le code !
    Ici on ne te fournit pas le poisson mais on préfère t'apprendre à pêcher ! (Confucius)
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Je n'ai pas étalé ma science justement en retirant mon code car le tien ne fonctionne déjà pas avec l'exemple initial !
    (Même sans message d'erreur une fois adapté il n'y a aucun résultat …)
    Peut-être ton classeur de travail ne correspond pas à l'exemple présenté initialement ?!
    Dans ce cas joindre un classeur exemple en .xlsx (donc sans macro) afin que je puisse déjà tester ton code …

    C'est pourtant extrêmement simple juste en reproduisant le résultat affiché initialement via de simples formules
    la logique étant du niveau d'un gamin en fin de primaire début de collège, le B-A-BA d'Excel !
    Une fois ces formules réalisées, il est facile de réaliser un algorithme les reproduisant par code
    en à peine une dizaine de lignes et une seule et unique boucle.   Penser Excel Avant VBA …

    Si tu avais au moins tenté les formules et après les avoir postées évidemment j'aurais déjà proposé le code !
    Ici on ne te fournit pas le poisson mais on préfère t'apprendre à pêcher ! (Confucius)
    Oui, désolé, le fichier initial a été modifié. Voici le fichier en version xlm qui inclu le code (avec les 80 lignes ) + des bouts de recherche en equiv ou formule recherche multiple (code également).
    Même si je comprend la logique de la fonction equiv et index, je n'arrive pas à récupérer avec ces fonctions les valeurs des users N-2, N-3, etc. (j'arrive uniquement à récupérer la valeur du N-1). Je suis donc preneur de votre avis sur cela.
    forum - Copie.xlsm

  14. #14
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Dans ce cas joindre un classeur exemple en .xlsx (donc sans macro)
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Bonsoir, pourquoi un xls sans code? désolé, mais étant novice sur le forum je ne saisi pas l'intérêt du xls sans code.

    Il suffit de prendre le xls et de ne pas lancer la macro, non? ou est-ce plus compliqué que ça?

  16. #16
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Parce que bon nombre d'entre nous n'ouvriront de toutes façons pas un Xlsm par exemple alors qu'un Xlsx...

    Mais c'est toi qui vois.

  17. #17
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Bonjour,

    Parce que bon nombre d'entre nous n'ouvriront de toutes façons pas un Xlsm par exemple alors qu'un Xlsx...

    Mais c'est toi qui vois.
    Bonjour, ça m'explique pas pourquoi bon nombre d'entre vous n'ouvrirait pas un xlsm? risque de virus?

    Le voici donc en xlsx. forum - Copie.xlsx

    à disposition.

  18. #18
    Invité
    Invité(e)
    Par défaut
    Parce que personnellement je ne l'ouvrerais pas pour de raisons de sécurité!
    risque de virus?
    Ça devrait suffire comme explication, soit mon aide t'intéresse ou pas!

    Après tout tu es le maître du jeux.

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Parce que personnellement je ne l'ouvrerais pas pour de raisons de sécurité!


    Ça devrait suffire comme explication, soit mon aide t'intéresse ou pas!

    Après tout tu es le maître du jeux.
    Evidemment que ton aide m'intéresse. Sinon, je n'aurais pas faire l'effort de renvoyer le fichier en xlsx. Je suis de nature curieuse et j'aime beaucoup apprendre de nouvelles choses notamment comment comment diviser par 10 le nb de lignes de code et l'utilisation des formules equiv et filtres élaborés en vba.

    Pou rappel, voici ce que j'aimerais réaliser:
    si louis a comme poste N et que son N+1 est Robert, la valeur collé seulement est = id de louis
    si andré a comme poste N et que son N+1 est Robert, la valeur collé est seulement = id de andré
    si Robert a comme poste N+1 et que son N+1 est Joseph, la valeur collé sur sa ligne est = id de robert, id de louis, id de andré
    Si joseph a comme poste N+1, (et personne au dessus de lui = c'est donc le big boss ) la valeur collé sur sa ligne est = id de joseph , id de robert (soit son N-1) et donc id de louis, id de andré (qui sont rattaché à Robert, qui lui meme est sous Joesph, soit ses N-2).

    un grand merci par avance

  20. #20
    Invité
    Invité(e)
    Par défaut
    Code module de classe : 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
    Public user As String, Plage_ As Range, Us As String 
    Public Sub lectureUser(ByRef Plage As Range)
    Set Plage_ = Plage
    Us = Plage_(1, 5)
    If Trim("" & Plage_(1, 2)) <> "" Then user = Trim("" & Plage_(1, 2))
    Plage_(1, 7) = ""
    End Sub
    Public Sub ScanUser(ByVal Dico As Object)
     If Trim("" & Plage_(1, 7)) = "" Then Plage_(1, 7) = Us Else Plage_(1, 7) = Us & "," & Plage_(1, 7)
     If user <> "" Then
      If Trim("" & Dico(user).Plage_(1, 7)) <> "" Then Dico(user).Plage_(1, 7) = Dico(user).Plage_(1, 7) & "," & Plage_(1, 7) Else Dico(user).Plage_(1, 7) = Plage_(1, 7)
     
     End If
    End Sub
    Public Sub Maj(ByVal Dico As Object)
    If user <> "" Then
         d = Split(Plage_(1, 7) & ",", ",")
         For i = 0 To UBound(d) - 1
            If Not CBool(InStr(Dico(user).Plage_(1, 7), d(i))) Then
                Dico(user).Plage_(1, 7) = Dico(user).Plage_(1, 7) & "," & d(i)
                End If
         Next
    End If
    End Sub

    Code Module standard : 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
     
    Sub test()
    Dim user As Object
    Set user = CreateObject("Scripting.Dictionary")
    With Sheets("Feuil1")
        For i = 0 To .Range("A1").CurrentRegion.Rows.Count - 2
            .Range("A2").Offset(i).Select
     
            If Not user.exists(.Range("A2").Offset(i, 4).Value) Then user.Add .Range("A2").Offset(i, 4).Value, New Classe1
          user(.Range("A2").Offset(i, 4).Value).lectureUser .Range(.Range("A2").Offset(i, 0), .Range("A2").Offset(i, 7))
        Next
        k = user.keys
        For i = 0 To user.Count - 1
           user(k(i)).ScanUser user
        Next
         k = user.keys
        For i = 0 To user.Count - 1
           user(k(i)).Maj user
        Next
    End With
    End Sub
    Nom : TesRd2.gif
Affichages : 133
Taille : 168,6 Ko
    Dernière modification par Invité ; 22/11/2017 à 13h12.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/11/2010, 21h14
  2. [XL-2003] Macro pour récupérer les données du volet espion
    Par _cece dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/01/2010, 17h00
  3. macro pour récupérer le nom de la classe
    Par Elay dans le forum C++
    Réponses: 3
    Dernier message: 27/10/2009, 11h45
  4. [XL-2007] Macro pour récupérer la valeur d'une formule avec Aujourd'hui
    Par patougaffou dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 28/09/2009, 19h28
  5. Macro pour récupérer des infos du NET
    Par lps91 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/02/2009, 09h20

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