[VBA] Selection conditionelle copy newsheet

CryingJoke -  
aminea Messages postés 2 Statut Membre -
Bonjour à tous,

Je développe actuellement une macro excel en VBA mais, étant novice, je rencontre quelques difficultées.
Voici la structure de ma feuille excel :
File name : GEO_RNSIR
Sheet name : RNSIR
1ère colonne = NOM
2ème colonne = PAYS
La table contient environ 20000 lignes

Je désire trier les pays chacun dans une feuille différente. Je m'explique :
NOM PAYS

BOB FRANCE
PIP ITALIE
JOE ALGERIE
TRU FRANCE
etc...

Le but est de créer une feuille FRANCE dans lequel sera copié la ligne complète de chaque personnes étant en FRANCE. BOB et TRU seront donc copié dans cette feuille FRANCE. Mais PIP va créer une feuille ITALIE et JOE une pour l'ALGERIE.
Le problème, c'est que je ne sais pas comment créer une boucle qui va permettre de créer une feuille pour chaque pays présents dans mon fichier et le remplir avec les infos de la feuille principale.

J'avais pensé à un select case, mais si je dois me farcir 500 case à la main j'suis pas arrivé et bonjour l'optimisation...
Configuration: Windows XP
Firefox 2.0.0.6

1 réponse

  1. aminea Messages postés 2 Statut Membre 1
     
    Bonjour CryingJoke,

    Essaie ceci, ça doit marcher avec un peu d'adaptation

    Sub Macro()
    
    Dim R As Range
    For Each R In Range("B2:B" & Range("B65536").End(xlUp).Row)
        If Not (FeuilleExist(R.Value)) Then
            Sheets.Add
            ActiveSheet.name = R.Value
        End If
        Sheets(R.Value).Select
        Range("A" & Range("A65536").End(xlUp).Row + 1) = R.Offset(0, -1)
    Next R
    End Sub
    
    Function FeuilleExist(name As String) As Boolean
    
    FeuilleExist = False
    
    Dim sh As Worksheet
    
    For Each sh In Worksheets
        If sh.name = name Then
            FeuilleExist = True
            Exit For
        End If
    Next sh
    End Function
    0