Déplacement de lignes

Bonjour à tous,

Mon problème est le suivant :

J'aimerais deplacer dans un autre fichier toutes les lignes des villes ayant plus de 20 employés, et dans un autre les lignes ses villes de plus de 200 employés.

Avez vous une idée svp? Merci pour votre aide 😫

NomPrénom

Ville

Fonction
........Machin....
......Machin...
etc...
......Bidule...
......Truc...

Bonjour

Un fichier 200.xls interrogeant par requête PowerQuery le classeur initial pour récupérer les lignes correspondantes.

Un autre 20.xls ...

A noter que plus de 20 peut être aussi dans plus de 200, donc à affiner...

Merci pour votre reponse.

C'est vraiment flou pour une débutante comme moi.

Donc j'ai créé un classeur 200.xls, à l'interieur "données" - "nouvelle requette"- " à partir d'un fichier" - ca partor d1 classeur" - choix du fichier "liste.xls" - "importer" -

et là je bloque...

Pouvez-vous me donner plus de précisions?

Merci

Bonjour

Donc j'ai créé un classeur 200.xls, à l'interieur "données" - "nouvelle requette"- " à partir d'un fichier" - ca partor d1 classeur" - choix du fichier "liste.xls" - "importer" -

et là je bloque...

Ne pas cliquer sur importer mais sur Modifier
Là, dans PowerQuery, il faut regrouper par Ville et demander le nombre de lignes puis, après validation, filtrer celles >= 200

Sinon poste un exemple

Merci pour votre aide.... ça devient urgent

Voici un exemple :

Bonjour

J'ai mis le nom du fichier en jaune : tu l'adaptes et Données, Actualiser Tout

Tu peux voir ensuite les requête :

  • la première, Data, récupère tout les lignes
  • la seconde 200
    • calcule le nombre de lignes par Collectivité
    • filtre ce qui est supérieur à 200
    • récupère dans Data les noms, prénoms et grade correspondants
11200-pq.xlsx (23.66 Ko)

Merci pour ton aide.

J'ai modifié le chemin d'accès et actualisé, voila ce qui s'affiche : "la clé ne correspond à aucune ligne dans la table".

Bonjour

La structure du fichier doit être différente de celui fourni... Nom d'onglet propablement...

Ah oui en effet, les titres des colonnes sont :

NomPrénomLibellé collectivitéLibellé grade (actuel)

RE

Avec le 1er onglet quel que soit son nom et tes titres sous réserve qu'il n'y ait pas des espaces en trop dans les titres comme sur le précédent...

7200-pq.xlsx (24.03 Ko)

"Data source : le fichier.... est introuvable"

La poisse.......

Re

Met le bon chemin : chez moi cela fonctionne...

J'ai enleve les espaces dans le nom du fichier. C'est mieux.

mais j'ai quand même : [Expression.Error] Désolé... nous n'avons pas trouvé la colonne 《 Prénom 》de la table.

Merci pour ton aide...

J'ai supprimé un espace dans les parametes de requête, ça fonctionne pour les 200 et plus

Maintenant les 20 à 199

Re

Il suffit de dupliquer le fichier puis changer le filtre sur le nombre de salariés à la 3ème étape de la requête...

Si tu as une idée, merci par avance...

Salut WM,
Salut Chris,

bon, ce n'est pas aussi tendance que PowerQuery mais ça fait le job...
Un double-clic sur la feuille démarre la macro et met les fichiers à jour à volonté en fonction des nouveaux ajouts à la BDD.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim sWBK As Workbook, iRow%, iIdx%, sPath$, sFile$
'
Cancel = True
Application.ScreenUpdating = False
'
Range("A1").CurrentRegion.Sort key1:=Range("C2"), order1:=xlAscending, Orientation:=xlTopToBottom, Header:=xlYes
Range("C2:C" & Range("C" & Rows.Count).End(xlUp).Row).Copy Destination:=Range("AAA1")
Range("AAA1:AAA" & Range("AAA" & Rows.Count).End(xlUp).Row).RemoveDuplicates (1), xlNo
'
'Création des fichiers et ouverture
For x = 1 To 2
    sPath = ThisWorkbook.Path
    sFile = Choose(x, "Villes-20.xlsx", "Villes-200.xlsx")
    If Len(Dir(sPath & "\" & sFile)) = 0 Then
        Set sWBK = Workbooks.Add
        sWBK.Sheets(1).Name = Split(sFile, "-")(0)
        With sWBK.Sheets(1).[A1]
            .Borders.LineStyle = xlContinuous
            .Interior.Color = RGB(255, 190, 0)
            .Value = Choose(x, "Villes comptant de 20 à 199 employés", "Villes comptant plus de 200 employés")
        End With
        sWBK.Sheets(1).Columns(1).AutoFit
        sWBK.SaveAs Filename:=sFile
    Else
        Workbooks.Open (sPath & "\" & sFile)
    End If
    Set sWBK = Nothing
Next
'Inscription des villes si inexistantes et tri
For x = 1 To Range("AAA" & Rows.Count).End(xlUp).Row
    iIdx = WorksheetFunction.CountIf(Columns(3), Range("AAA" & x).Value)
    If iIdx >= 20 Then
        Set sWBK = Workbooks(IIf(iIdx >= 20 And iIdx < 200, "Villes-20.xlsx", "Villes-200.xlsx"))
        With sWBK.Sheets(1)
            If WorksheetFunction.CountIf(.Columns(1), Range("AAA" & x).Value) = 0 Then _
                iRow = .Range("A" & Rows.Count).End(xlUp).Row + 1: _
                .Range("A" & iRow).Value = Range("AAA" & x).Value: _
                If iRow > 2 Then .Columns(1).Sort key1:=.Range("A2"), order1:=xlAscending, Orientation:=xlByRows, Header:=xlYes
        End With
        sWBK.Save
        Set sWBK = Nothing
    End If
Next
Columns("AAA").ClearContents
'
Application.ScreenUpdating = True
'
End Sub
8wm.xlsm (25.55 Ko)


A+

RE madame qui ne dit jamais bonjour

Si tu as une idée, merci par avance...

Je l'ai indiqué : moins d'un minute à mettre en œuvre

Tu dupliques le classeur 200.xlsx sous un autre nom, tu y ouvres PowerQuery et au lieu de filtrer sur >200 tu filtres sur entre 20 et 199 comme on le fait dans un tableau Excel

C'EST TOUT !

Bonjour curulis57

Rechercher des sujets similaires à "deplacement lignes"