[VBA] Selection conditionelle copy newsheet

Fermé
CryingJoke - 31 oct. 2007 à 10:03
aminea Messages postés 2 Date d'inscription vendredi 28 septembre 2007 Statut Membre Dernière intervention 1 novembre 2007 - 1 nov. 2007 à 12:48
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...
A voir également:

1 réponse

aminea Messages postés 2 Date d'inscription vendredi 28 septembre 2007 Statut Membre Dernière intervention 1 novembre 2007 1
1 nov. 2007 à 12:48
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