Macro copier coller avec condition Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
N
NyfaDu86
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 4 avril 2018
Version d'Excel : 2016 fr

Message par NyfaDu86 » 25 avril 2019, 17:13

Bonjour,
J'ai un petit problème pour automatiser une simple recherche.
Dans la feuille "Agents" on retrouve les noms des personnes avec en colonne B leur service.
J'aimerai qu'automatiquement ca copie colle les noms des personnes dans la bonne colonne avec une macro ou alors une formules.
Si on supprime une ligne dans agent, ca enleve son nom dans la feuille service, et s'il on ajoute un nom, ca l'ajoute également dans la feuille Service.

J'espere que c'est compréhensible ^^
Merci de votre aide !
Test.xlsx
(12.32 Kio) Téléchargé 8 fois
G
Girodo
Membre dévoué
Membre dévoué
Messages : 629
Appréciations reçues : 35
Inscrit le : 24 mars 2015
Version d'Excel : 2010

Message par Girodo » 25 avril 2019, 17:31

Salut,

Une "bidouille" par formule. (Tu peux masquer la colonne A que j'ai rajouté si elle te gène)

Girodo,
Test.xlsx
(35.17 Kio) Téléchargé 7 fois
Petit Chêne deviendra gland ! :btres:
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'882
Appréciations reçues : 182
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 25 avril 2019, 17:34

Bonjour Nyfa, bonjour le forum,

Essaie comme ça :
Dim TV As Variant
Dim D As Object
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim COL As Byte
Dim TL() As Variant

Set OA = Worksheets("Agents")
Set OS = Worksheets("Service")
TV = OA.Range("A1").CurrentRegion
Set D = CreateObject("Scripting.Dictionary")
For I = 2 To UBound(TV, 1)
    D(TV(I, 2)) = ""
Next I
tmp = D.Keys
For J = 0 To UBound(tmp)
    K = 1: Erase TL
    COL = OS.Rows(1).Find(tmp(J), , xlValues, xlWhole).Column
    For I = 2 To UBound(TV, 1)
        If TV(I, 2) = tmp(J) Then
            ReDim Preserve TL(1 To K)
            TL(K) = TV(I, 1)
            K = K + 1
        End If
    Next I
    OS.Cells(2, COL).Resize(UBound(TL), 1) = Application.Transpose(TL)
Next J
End Sub
Plus le temps de commenter le code mais si tu en as besoin n'hésite pas...
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 2'181
Appréciations reçues : 242
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 25 avril 2019, 17:40

Bonjour NyfaDu86, Girodo, Thauthème,

Un essai par formule matricielle..... :lole: ....à valider par touches Ctrl + Maj + Entrée

Sur feuille Service, en A2:
=SI(LIGNE()-1>NB.SI(Agents!$B$1:$B$138;A$1);"";INDEX(Agents!$A$1:$A$138;PETITE.VALEUR(SI(Agents!$B$1:$B$138=A$1;LIGNE(Agents!$B$1:$B$138);"");LIGNE()-1)))
à tirer vers la droite puis en bas.
Test-1.xlsx
(35.84 Kio) Téléchargé 7 fois
Cordialement,
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
N
NyfaDu86
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 4 avril 2018
Version d'Excel : 2016 fr

Message par NyfaDu86 » 26 avril 2019, 09:43

Merci pour vos trois solutions, c'est parfait :) :
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message