1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2016 Besoin d'aide et je ne sais pas décrire ma demande

Discussion dans 'Forum Excel' démarrée par SeXMaN, 7 Février 2019.

  1. SeXMaN

    SeXMaN XLDnaute Junior

    Inscrit depuis le :
    2 Décembre 2005
    Messages :
    57
    "J'aime" reçus :
    0
    Bonjour,

    Je ne sais pas comment exprimer ce que je souhaite alors j'ai fais un excel explicatif.

    Merci à tous ceux qui peuvent m'aider.
     

    Pièces jointes:

  2. Chargement...


  3. JHA

    JHA XLDnaute Barbatruc

    Inscrit depuis le :
    15 Juillet 2006
    Messages :
    7688
    "J'aime" reçus :
    397
    Sexe :
    Masculin
    Habite à:
    Dunkerque
    Utilise:
    Excel 2013 (PC)
    Bonjour à tous,

    Par formule matricielle
    Code (Text):
    =SIERREUR(SI(MOD(COLONNE();2)=0;INDEX($C$4:$C$13;PETITE.VALEUR(SI(($E$4:$E$13=$C25);LIGNE($E$4:$E$13)-3);NB(SI(MOD(COLONNE($D:E);2);0))));INDEX($D$4:$D$13;PETITE.VALEUR(SI(($E$4:$E$13=$C25);LIGNE($E$4:$E$13)-3);NB(SI(MOD(COLONNE($D:E);2);0)))));"")
    JHA
     

    Pièces jointes:

    SeXMaN aime votre message.
  4. SeXMaN

    SeXMaN XLDnaute Junior

    Inscrit depuis le :
    2 Décembre 2005
    Messages :
    57
    "J'aime" reçus :
    0
    C'est exactement cela mais je n'arrive pas à adapter ta formule, malgré que je fasse bien le ctrl+maj+entrée.
    Est ce que tu peux me faire évoluer ta formule, j'ai simplifié mon tableau :
    Je n'ai plus l'utilité de la "D" les prénoms, j'ai fait un concaténage.
    Par contre est ce que l'on peut travailler sur plusieurs page excel avec des formule matricielle ?
     
  5. JHA

    JHA XLDnaute Barbatruc

    Inscrit depuis le :
    15 Juillet 2006
    Messages :
    7688
    "J'aime" reçus :
    397
    Sexe :
    Masculin
    Habite à:
    Dunkerque
    Utilise:
    Excel 2013 (PC)
    Bonjour à tous,

    Tu peux essayer cette formule:
    Code (Text):
    =SIERREUR(INDEX($C$4:$C$13;PETITE.VALEUR(SI(($E$4:$E$13=$C25);LIGNE($E$4:$E$13)-3);COLONNE(A:A)));"")
    Copier vers la droite

    JHA
     
    SeXMaN aime votre message.
  6. chris

    chris XLDnaute Barbatruc

    Inscrit depuis le :
    21 Février 2005
    Messages :
    11335
    "J'aime" reçus :
    622
    Habite à:
    près de St Quentin en Yvelines/ Excel 2010 à 2019
    Utilise:
    Excel 2010 (PC)
    Bonjour à tous

    Sur 2016 possible par PowerQuery intégré

    2 versions ci-joint : l'une ou nom et prénom sont concaténés l'autre selon ton modèle

    Il suffit d'actualiser Tout (onglet données) si la source change
     

    Pièces jointes:

    SeXMaN aime votre message.
  7. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26301
    "J'aime" reçus :
    2311
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonsoir SeXMaN, JHA, chris,

    Une solution VBA :
    Code (Text):
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim source As Range, dest As Range, tablo, d As Object, ncol&, resu(), i&, x$, n&, lig&, col&
    Set source = [C3].CurrentRegion.Resize(, 3) 'à adapter
    Set dest = [H4] '1ère cellule de destination, à adapter
    tablo = source 'matrice, plus rapide
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    dest.Resize(Rows.Count - dest.Row + 1, Columns.Count - dest.Column + 1).ClearContents 'RAZ
    '---dimensions du tableau des résultats---
    Set d = CreateObject("Scripting.Dictionary")
    For i = 2 To UBound(tablo)
        d(tablo(i, 3)) = d(tablo(i, 3)) + 1 'comptage
    Next
    If d.Count = 0 Then GoTo 1
    ncol = 2 + 2 * Application.Max(d.items)
    ReDim resu(1 To d.Count, 1 To ncol)
    '---remplissage du tableau des résultats---
    d.RemoveAll
    For i = 2 To UBound(tablo)
        x = tablo(i, 3)
        If Not d.exists(x) Then
            n = n + 1
            resu(n, 1) = x
            d(x) = n 'mémorise le numéro de ligne
        End If
        lig = d(x)
        resu(lig, ncol) = resu(lig, ncol) + 2 'mémorise le numéro de colonne
        col = resu(lig, ncol)
        resu(lig, col) = tablo(i, 1)
        resu(lig, col + 1) = tablo(i, 2)
    Next
    '---restitution---
    If ncol + dest.Column > Columns.Count Then ncol = Columns.Count - dest.Column 'sécurité
    dest.Resize(n, ncol - 1) = resu
    1 Application.EnableEvents = True
    End Sub
    Fichier joint.

    Pour tester j'ai copié le tableau source sur 20 000 lignes, la macro s'exécute chez moi en 0,38 seconde.

    A+
     

    Pièces jointes:

    SeXMaN aime votre message.
  8. SeXMaN

    SeXMaN XLDnaute Junior

    Inscrit depuis le :
    2 Décembre 2005
    Messages :
    57
    "J'aime" reçus :
    0
    Merci à tous pour vos réponses.
    @job75 merci mais je ne sais pas comment adapter ton VBA à mon excel.
    Et je me rends compte avec ta formule @JHA, j n'arrive pas à l'adapter parce que je n'ai pas été précis avec mon exemple.
    @chris mais je ne sais pas gérer les matrice.

    En faites je pensais pouvoir adapter vos formules grâce à mes compétences. Mais je me rends compte qu'elles sont insuffisante.

    Donc je vous redonne un fichier, mais cette fois c l'original en enlevant les données.
    En espérant que vous accepterez de répondre au boulet que je suis.

    Dans la feuille "Corres", à partir de la colonne F, doit apparaître les concatenage qui sont dans la feuille "non".

    Merci
     

    Pièces jointes:

  9. JHA

    JHA XLDnaute Barbatruc

    Inscrit depuis le :
    15 Juillet 2006
    Messages :
    7688
    "J'aime" reçus :
    397
    Sexe :
    Masculin
    Habite à:
    Dunkerque
    Utilise:
    Excel 2013 (PC)
    Bonjour à tous,

    A essayer par formule, j'ai ajouté des données dans l'onglet "non" pour trouver le nom associé au mail.

    JHA
     

    Pièces jointes:

  10. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26301
    "J'aime" reçus :
    2311
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Le fichier du post #7 c'est vraiment n'importe quoi !

    C'est sûr qu'en travaillant comme ça vous n'irez pas loin...
     
  11. SeXMaN

    SeXMaN XLDnaute Junior

    Inscrit depuis le :
    2 Décembre 2005
    Messages :
    57
    "J'aime" reçus :
    0
    Merci de votre aide.
    Et il n'y avait pas de mépris dans mon comportement nonchalant.
     

Partager cette page