Microsoft 365 Copier lignes vers onglet en fonction d'une valeur

pierrof

XLDnaute Occasionnel
Bonjour,

je souhaite pour mon nouveau projet recopier les lignes d'une feuille en fonction d'une valeur (code insee) vers un autre onglet (il peut y avoir plusieurs onglets)

J'ai un onglet Data qui récence des codes insee avec des locaux, et donc en fonction des code Insee de mon export j'aimerai classer les lignes par local.

Je laisse un fichier exemple pour plus de clarté.

Merci d'avance de votre aide.

Cordialement
 

Pièces jointes

  • Tests_Répartition.xlsm
    19 KB · Affichages: 4
Solution
Bonjour Pierrof,
Un essai en PJ avec :
VB:
Sub Répartir()
    Dim L%, Commune, Feuille, DL%, NoL%, Qté%
    Application.ScreenUpdating = False
    Qté = 0
    For L = 2 To Range("A65500").End(xlUp).Row
        Commune = Cells(L, "P")
        If Application.CountIf(Sheets("Data").[A:A], Commune) = 0 Then
            MsgBox "La commune " & Commune & " n'est pas référencée dans Data."     ' Le CP n'est pas dans la base
        Else
            NoL = Application.Match(Commune, Sheets("Data").[A:A], 0): Feuille = Sheets("Data").Cells(NoL, "D")
            If FeuilleExiste(Feuille) = False Then
                MsgBox "La feuille " & Feuille & " n'existe pas."                   ' la feuille n'existe pas
            Else
                Dossier...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Pierrof,
Un essai en PJ avec :
VB:
Sub Répartir()
    Dim L%, Commune, Feuille, DL%, NoL%, Qté%
    Application.ScreenUpdating = False
    Qté = 0
    For L = 2 To Range("A65500").End(xlUp).Row
        Commune = Cells(L, "P")
        If Application.CountIf(Sheets("Data").[A:A], Commune) = 0 Then
            MsgBox "La commune " & Commune & " n'est pas référencée dans Data."     ' Le CP n'est pas dans la base
        Else
            NoL = Application.Match(Commune, Sheets("Data").[A:A], 0): Feuille = Sheets("Data").Cells(NoL, "D")
            If FeuilleExiste(Feuille) = False Then
                MsgBox "La feuille " & Feuille & " n'existe pas."                   ' la feuille n'existe pas
            Else
                Dossier = Cells(L, "A")
                If Application.CountIf(Sheets(Feuille).[A:A], Dossier) = 0 Then    ' Dossier non enregistré
                    DL = 1 + Sheets(Feuille).Range("A65500").End(xlUp).Row
                    Sheets(Feuille).Range("A" & DL & ":P" & DL) = Range("A" & L & ":P" & L).Value
                    Qté = Qté + 1
                End If
            End If
        End If
    Next L
    MsgBox "Nombre de dossier exportés : " & Qté
End Sub
Je teste si la commune existe et si la feuille existe.
Sans info sur ce point, les dossiers rangés ne sont pas supprimés de la base.
 

Pièces jointes

  • Tests_Répartition (1).xlsm
    25.7 KB · Affichages: 8

pierrof

XLDnaute Occasionnel
Bonjour pierrof, sylvanu,

Il me semble que la feuille VF doit récupérer aussi les données de la commune 95001.

Donc comme A2, ce n'est pas une ventilation mais un filtrage.

A+
Bonjour job75,
Oui en effet tu as raison, mais normalement je ne dois pas avoir de doublons de commune dans ma feuille Data... c'est quand j'ai voulu anonymiser les données que je fais ce doublon.
Merci quand même.
Bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
312 164
Messages
2 085 870
Membres
103 007
dernier inscrit
salma_hayek