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 transfert d'une feuille dans un nbr de feuille inconnu selon un critère


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 5
    Points : 0
    Points
    0
    Par défaut Macro pour transfert d'une feuille dans un nbr de feuille inconnu selon un critère
    Bonjour à tous,

    Etant débutante en VBA depuis une semaine, et ayant été grandement aidé par ce forum, je viens vous poser une "petite" ("Grande" pour moi!) question.

    Je collecte un nombre de données assez important pour plein d'individus.
    A chaque fois, j'ai une feuille nommée "FeuillesPropres" dans laquelle j'ai un tableau récapitulant les informations de chaque individus.
    Chaque individu porte un numéro spécifique (contenu dans la colonne F), et un nombre de lignes spécifiques.

    Ce que je voudrais faire, c'est qu'à partir de ce tableau, excel me crée une feuille par individu (dont le nom est le numéro de l'individu), et qu'il y colle la première ligne de la "FeuillesPropres" ainsi que toutes les lignes de ce sujet.
    Autrement dit, pour l'individu 1, ma macro doit créer une feuille "1", et coller toutes les lignes dont la colonne F de mon tableau est égal à 1.

    Ce qu'il faut savoir, c'est que j'aimerai que cette macro puisse être réutilisée pour plein d'études différentes, c'est à dire pour un nombre d'individu inconnu et pour un nombre de lignes et de colonnes par individu inconnu.

    Jusqu'à maintenant, j'ai réussi à faire en sorte qu'une feuille par individu soit créée mais je n'arrive pas du tout à lui demandé de me copier et coller les lignes correspondant à mon individu.

    J'espère que ce message est claire ... et surtout que l'un d'entre vous réussira à mettre fin à mon supplice !!!!
    Pardon par avance pour toutes les horreurs que vous trouverez dans cette macro reflétant mon niveau de VBA !

    Merci par avance, je vous envoie le fichier avec la macro !

    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
    Code :
    Sub TransfereFeuilleSujets()
    ' la macro doit transferer les résultats de chaque personne dans la feuille qui lui correspond
    'Ne pas rafraichir l'écran pendant l'execution de la macro
        Application.ScreenUpdating = False
    'definition de la derniere ligne du tableau
    Dim DernLign As Long
    DernLign = Range("F" & Rows.Count).End(xlUp).Row + 50
    'Recuperation du nbr de sujets   
        Range("C2" ).Select
        ActiveCell.FormulaR1C1 = "=COUNT(C[-1])"
     
    'Report du num de sujet dans la colonne B      
            Range("B2" ).Select
        ActiveCell.FormulaR1C1 = "=IF(RC[4]=R[-1]C[4],"""",IF(RC[4]="""","""",RC[4]))"
            Range("B2" ).Select
        Selection.AutoFill Destination:=Range("B2:B3000" ), Type:=xlFillDefault
            Range("B2:B3000" ).Select
        ActiveWindow.SmallScroll Down:=DernLign
     
    'Copier / coller des valeurs de la colonne B dans A pour qu'il ne detecte que des cellules vides et non pas des cellules avec formules lors de l'étape précédente
           Range("B2:B" & DernLign).Select
        Selection.Copy
           Worksheets("FeuillesPropres" ).Range("A2:A" & DernLign).Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
    '' ==> La macro fonctionne bien jusqu'ici!!
    'Creation de feuilles correspondant à chaque personne selon son numéro
    Dim Plage_sujets As Range
    Dim nom, C
    Set Plage_sujets = Range(Cells(3, 1), Cells(DernLign, 1))
    Dim nom_sujet As Range
    Dim nomSujet, NS
    Set Plage_numlignesujet = Range(Cells(3, 6), Cells(DernLign, 6)) 'Activer la colonne F de la feuille "FeuillesPropres" (Est ce que c'est bien ça??)
    For Each C In Plage_sujets
        If C.Value <> "" Then
            For Each NS In Plage_numlignesujet
                    If C.Value = NS.Value Then
                        Rows(ActiveCell.Row).Copy 'Copier toutes les lignes dont la valeur correspondant au numéro de personne est retrouvé dans la colonne F
                        Sheets.Add Count:=1, after:=Worksheets(Worksheets.Count) 'Création d'une feuille par num de personne
                        ActiveSheet.Name = C.Value 'donne à la feuille le nom du sujet
                        Range("F3" ).Select 'Selectionne F3 de la feuille créée pour l'individu
                        ActiveCell.Paste 'Coller les valeurs des lignes copiées pour chaque personne
                    End If
            Next NS
        End If
    Next C
     
    '==> la partie d'après fonctionne bien aussi
    'copier coller de la première ligne dans chaque nouvelle feuille
        Dim F As Variant
        a = Application.Sheets.Count ' compte le nombre de feuille
     
        For F = 1 To a
        If Sheets(F).Name <> "FeuillesPropres" Then
        Sheets("FeuillesPropres" ).Rows(1).Copy Sheets(F).Rows(1)
        End If
    Next
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    Pour la partie création des feuilles, voir exemple ci-dessous si ça peu contribuer (testé)

    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
    Sub TestVinc()
     
        Dim SrcRng As Range
        Dim EmployID() As Variant
     
    ' Initialisation
        Application.ScreenUpdating = False
        Set SrcRng = ThisWorkbook.Worksheets("FeuillesPropres").Range("F3").CurrentRegion
        Debug.Print SrcRng.Address
     
    ' Extrait les employés (unique)
        EmployID = Extract_Uniq_Val(SrcRng, 1)
        Call Create_ShByName(EmployID)
     
        Application.ScreenUpdating = True
     
    End Sub
    Sub Create_ShByName(SheetNamAR As Variant)
    ' Crée les feuilles suivant les noms passés en arguments
     
        Dim CreSh As Integer, ExistSh As Integer, CntSh As Integer
        Dim WarnMsg As String
     
        On Error Resume Next
     
        For CntSh = LBound(SheetNamAR, 1) To UBound(SheetNamAR, 1)
     
            If IsObject(ThisWorkbook.Worksheets(CStr(SheetNamAR(CntSh, 1)))) = False Then   'La feuille n'existe pas: on la crée
     
                Worksheets.Add After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
                ActiveSheet.Name = CStr(SheetNamAR(CntSh, 1))
                CreSh = CreSh + 1
     
                Else:   'La feuille existe déjà : on lève un Warning
     
                    ExistSh = ExistSh + 1
                    WarnMsg = WarnMsg & CStr(SheetNamAR(CntSh, 1)) & vbCrLf
            End If
     
        Next CntSh
     
        If WarnMsg <> "" Then
     
            WarnMsg = "Feuilles non créées car existantes: " & vbCrLf & WarnMsg & vbCrLf & "Info: " & CreSh & " feuilles créées"
            MsgBox WarnMsg, vbExclamation, "Create_ShByName"
     
            Else: MsgBox CreSh & " feuilles créées", vbInformation, "Create_ShByName"
     
        End If
     
    End Sub
    Function Extract_Uniq_Val(DataRng As Range, ColRef As Integer) As Variant
    ' Extrait les valeurs uniques à partir d'un range data et les retournes sous forme d'un tableau
     
        Dim SelRng As Range
     
    ' Initialisation
        Set SelRng = DataRng.Columns(ColRef)   'On prend tout le range si ColRef n'est pas spécifié, autrement, on sélectionne la colonne uniquement
        Debug.Print SelRng.Address
     
    ' On copie le réultat
        Debug.Print DataRng(1, DataRng.Columns.Count + 1).Address
        SelRng.Copy Destination:=DataRng(1, DataRng.Columns.Count).Offset(0, 2) 'On copie temporairement après la dernière colonne (avec une colonne vide entre)
     
    ' On enlève les enregistrements en doublon
        DataRng.Columns(DataRng.Columns.Count + 2).RemoveDuplicates Columns:=1, Header:=xlNo
     
        Set SelRng = DataRng.Columns(DataRng.Columns.Count + 2).CurrentRegion
        Debug.Print SelRng.Address
     
        Extract_Uniq_Val = SelRng       ' On retourne sous forme de tableau
        SelRng.Delete                   ' On efface avant le retour
     
    End Function
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    Le code complet, testé et commenté
    - Sub TestVinc_Main: ce que vous lancez
    - Function Extract_Uniq_Val: extrait les données uniques d'un Range et les retourne sous forme de tableau
    - Sub Create_ShByName: teste l’existence des worksheets par leur nom et les crée si non existante
    - Sub Copy_By_EmplId utilise les fonctions de filtrages (par employé Id ici) et copie sur le résultat sur les feuilles correspondantes

    Ce qui ne marche pas complètement: la dernière, car vous avez un ligne blanche entre vos données et les labels ..... A proscrire sous Excel!




    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    Option Explicit
    Sub TestVinc_Main()
     
        Dim SrcRng As Range
        Dim EmployID() As Variant
        Dim ColEmpld As Integer
     
    ' Initialisation
        Application.ScreenUpdating = False
     
        Set SrcRng = ThisWorkbook.Worksheets("FeuillesPropres").Range("F3").CurrentRegion
        Debug.Print SrcRng.Address
        ColEmpld = 1
     
    ' Extrait les employés (unique)
        EmployID = Extract_Uniq_Val(SrcRng, ColEmpld)
        Call Create_ShByName(EmployID)
     
    ' On transfert les data's par employé ID
        Call Copy_By_EmplId(SrcRng, EmployID, ColEmpld)
     
        Application.ScreenUpdating = True
     
    End Sub
    Sub Copy_By_EmplId(DataRng As Range, FiltAR As Variant, ColRef As Integer)
    ' Filtre le DataRng sur la colonne ColRef avec les filtres passés en tableau et copie le résultat sur la feuille correpondante
     
    '*****************************************************************************************************
    ' Attention: les éventuelles données existantes sur les feuilles des employés Id ne sont pas traitées
    ' Attention: il ne faut pas de ligne vide entre les labels et les datas
    '*****************************************************************************************************
     
        Dim FiltInd As Integer
     
    ' Initialisation
        If Not (IsArray(FiltAR)) Then Exit Sub
        DataRng.Worksheet.AutoFilterMode = False                                            'On enlève l'autofilter
     
    ' On prend chaque filtre et on l'applique
     
        DataRng.AutoFilter  'On met l'autofilter
     
        For FiltInd = LBound(FiltAR, 1) To UBound(FiltAR, 1)
     
            Debug.Print "Filtre " & FiltAR(FiltInd, 1)
     
            With DataRng
                .AutoFilter Field:=ColRef, Criteria1:=FiltAR(FiltInd, 1)                    'On applique le filtre sur Employés
     
                If DataRng.SpecialCells(xlCellTypeVisible).Count > 0 Then                   'On teste qu'il reste quelquechose après filtrage
                    .Copy Destination:=Worksheets(CStr(FiltAR(FiltInd, 1))).Range("A1")     'On copie le résultat sur la feuille correspondante
                End If
     
            End With
     
        Next FiltInd
     
        DataRng.Worksheet.AutoFilterMode = False                                            'On enlève tous les filtres
     
    End Sub
    Sub Create_ShByName(SheetNamAR As Variant)
    ' Crée les feuilles suivant les noms passés en arguments
     
        Dim CreSh As Integer, ExistSh As Integer, CntSh As Integer
        Dim WarnMsg As String
     
        On Error Resume Next
     
        For CntSh = LBound(SheetNamAR, 1) To UBound(SheetNamAR, 1)
     
            If IsObject(ThisWorkbook.Worksheets(CStr(SheetNamAR(CntSh, 1)))) = False Then   'La feuille n'existe pas: on la crée
     
                Worksheets.Add After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
                ActiveSheet.Name = CStr(SheetNamAR(CntSh, 1))
                CreSh = CreSh + 1
     
                Else:                                                                       'La feuille existe déjà : on lève un Warning
     
                    ExistSh = ExistSh + 1
                    WarnMsg = WarnMsg & CStr(SheetNamAR(CntSh, 1)) & vbCrLf
            End If
     
        Next CntSh
     
        If WarnMsg <> "" Then
     
            WarnMsg = "Feuilles non créées car existantes: " & vbCrLf & WarnMsg & vbCrLf & "Info: " & CreSh & " feuilles créées"
            MsgBox WarnMsg, vbExclamation, "Create_ShByName"
     
            Else: MsgBox CreSh & " feuilles créées", vbInformation, "Create_ShByName"
     
        End If
     
    End Sub
    Function Extract_Uniq_Val(DataRng As Range, ColRef As Integer) As Variant
    ' Extrait les valeurs uniques à partir d'un range data et les retournes sous forme d'un tableau
     
        Dim SelRng As Range
     
    ' Initialisation
        Set SelRng = DataRng.Columns(ColRef)   'On prend tout le range si ColRef n'est pas spécifié, autrement, on sélectionne la colonne uniquement
        Debug.Print SelRng.Address
     
    ' On copie le réultat
        Debug.Print DataRng(1, DataRng.Columns.Count + 1).Address
        SelRng.Copy Destination:=DataRng(1, DataRng.Columns.Count).Offset(0, 2) 'On copie temporairement après la dernière colonne (avec une colonne vide entre)
     
    ' On enlève les enregistrements en doublon
        DataRng.Columns(DataRng.Columns.Count + 2).RemoveDuplicates Columns:=1, Header:=xlNo
     
        Set SelRng = DataRng.Columns(DataRng.Columns.Count + 2).CurrentRegion
        Debug.Print SelRng.Address
     
        Extract_Uniq_Val = SelRng       ' On retourne sous forme de tableau
        SelRng.Delete                   ' On efface avant le retour
     
    End Function
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Bonjour vinc_bilb,

    Merci sincèrement pour cette réponse !!

    J'ai essayé d'appliquer votre macro, mais il y a un bug sur "la méthode autofilter de l'objet range" qui échoue ...
    Et ça arrive au moment de la Sub Copy_By_EmplId(DataRng As Range, FiltAR As Variant, ColRef As Integer), lorsqu'il veut prendre chaque filtre et l'appliquer ... et je n'arrive pas à résoudre le problème.

    Est ce qu'il y a un moyen de déboguer ?

    Merci encore pour le temps que vous avez passé sur la question

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je ne peux pas vraiment t'aider, j'écris de mon téléphone!

    Mais si des collègues peuvent reprendre l'idée et si elle te convient, je proposerai d'utiliser un dictionnaire pour recenser le matricules (individus) et ensuite grâce à ce dictionnaire je créerais le les onglets et je ferais un filtre élaboré!

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    Pouvez vous renvoyer votre fichier + indication où ça plante? Est-ce-avant ou après avoir enlevé la ligne vide entre les datas et les labels?

    Mais si des collègues peuvent reprendre l'idée et si elle te convient, je proposerai d'utiliser un dictionnaire pour recenser le matricules (individus) et ensuite grâce à ce dictionnaire je créerais le les onglets et je ferais un filtre élaboré!
    => dans l'esprit, c'est ce que j'ai fait mais en passant par un RemoveDuplicates du range pour garder les Id uniques puis par un autofilter en passant les paramètres sous forme de tableau

    Le souci vient surtout de ses données, avec une ligne vide entre les labels et les données ce qui n'est vraiment pas top dès que l'on taquine le Range.CurrentRegion
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 5
    Points : 0
    Points
    0
    Par défaut Fichier bis
    Bonjour,

    Voici le fichier avec la nouvelle macro.
    J'ai indiqué où ça plante dans la macro.

    Ce qui m'arrangerait vraiment c'est qu'il n'y ait pas de sauts de ligner entre les individus, donc cela me va parfaitement!
    Et ça à planté dès que je l'ai lancé, puis j'ai retiré les lignes vides, et ça plantait quand même toujours après...

    EssaiNumSujet_NlleMacro.xlsm

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Voir proposition ci-jointe, bien testée et OK selon moi

    EssaiNumSujet_NlleMacro.xlsm
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  9. #9
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 5
    Points : 0
    Points
    0
    Par défaut :)
    Okay, alors je l'ai essayé, et elle ne fonctionne pas sur mon ordi.
    J'ai un excel 2011, et un mac, est ce que ça pourrait expliquer un bug ??
    Ca plante toujours au même endroit.

    Toutefois, j'ai demandé à un ami d'ouvrir le fichier sur son PC, mais avec un excel 2013 et ça a effectivement bien fonctionné !

    Mais je ne comprends pas pourquoi ça ne marche pas sur mon mac.
    Si vous n'avez pas de réponse, je vous remercie quand même vraiment de tout le temps que vous avez passé sur la question !

  10. #10
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    J'ai un excel 2011, et un mac, est ce que ça pourrait expliquer un bug ??
    => et bé ..... désolé, mais aucune idée là
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Citation Envoyé par Annyie Voir le message
    J'ai un excel 2011, et un mac
    Tu aurais pu le dire dès le début.
    Dans ton premier message, tu as dit que ton Excel était un 2010, pas un 2011.
    Je viens de changer.

    De plus, vu que les derniers codes proposés l'ont été dans des fichiers et pas postés dans les messages, il est difficile de voir si, dans ces codes, il y a des choses qui ne fonctionnent pas sur Mac.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Une collection (Dictionary) permettra de recenser les matricules! Un filtre élaboré copiera les données dans l'onglet de l'individu ses blanc et sen doublon en une seule passe!

    Li n'y a pas lieu de ce prendre la tête! Dès que j'ai accès à mon Pc je m'y colle!

    http://www.developpez.net/forums/d15...a/#post8326770

    Voici un autre exemple plus proche de ta problématique!

    Avec un Dico et un filtre avancé: http://www.developpez.net/forums/d14...s/#post8060734
    Dernière modification par Invité ; 19/09/2015 à 16h51.

  13. #13
    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, bonjour !

    Robert, tu viens de déclencher l'erreur 1664 à ma santé car pas de Dictionary sur MAC ‼

    Mails il est possible d'utiliser un dictionnaire interne à Excel via une variable tableau et la fonction de feuille de calculs EQUIV …


    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse
    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)

  14. #14
    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 764
    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 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sauf si j'ai mal lu la question, le filtre avancé peux tout résoudre sans un dictionnaire.
    Discussions sur le même sujet
    http://www.developpez.net/forums/d12...l/#post7190633
    http://www.developpez.net/forums/d13...e/#post7210960
    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

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bonjour Marc et Philippe,
    Merci de me remettre sur les rails!

    Philippe excellent tuto

  16. #16
    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 764
    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 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour Robert,
    Philippe excellent tuto
    Mille mercis
    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

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/09/2015, 11h35
  2. [XL-2007] Macro pour copier d'une feuille vers une autre
    Par amapacha dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/09/2014, 12h37
  3. macro pour impression d'une ligne excel sous word
    Par schwoby dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2007, 12h02
  4. [OpenOffice][Tableur] [macro] Evenements : modif d'une cellule dans calc
    Par Eruil dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 23/04/2007, 16h26
  5. Macro pour ajouter un nouvel élément dans un tableau
    Par dudu134 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/02/2007, 16h31

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