Fonction ou macro copie de feuille en feuille

Résolu
JOLARITALE Messages postés 149 Statut Membre -  
JOLARITALE Messages postés 149 Statut Membre -
Bonjour,
j'ai un classeur de 350 feuilles, avec un première feuille, une liste du nom de toutes les feuilles du classeur.

Toutes les feuilles sont simillaire et ont des nom de format N+un chiffre.

Voila ma feuille 1
colonne A
Nom de feuille
Modèle
N5
N7
N10
N20
N22
etc

je voudrais que pour chaque nom de feuille une fonction ou une macro alle dans la feuille portant ce nom et me mette en colonne B la valeur de la cellule C5 (Nom) et en colonne C la valeur de la cellule C6(prénom).

Donnant

Colonne A.....Colonne B.....Colonne C
Nom de feuille
Modèle
N5.......... Nom N5..... Prénom N5
N7.......... Nom N7..... Prénom N7
N10..... Nom N10..... Prénom N10
N20..... Nom N10..... Prénom N20
N22..... Nom N22..... Prénom N22

A voir également:

24 réponses

zebulon2503 Messages postés 1319 Statut Membre 110
 
Salut
Tes feuilles sont numerotees aleatoirement ou de 1 a 350?
Tu as deja l'affichage de base sur ta feuille 1:

colonne A
Nom de feuille
Modèle
N5
N7
N10
N20
N22
etc 


?

Et tu as besoin d'une macro juste pour afficher les noms et prenoms ou le reste egalement ?
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour,

en B2:
=INDIRECT(A2 & "!C5")
en C2:
=INDIRECT(A2 & "!C6")

eric
0
zebulon2503 Messages postés 1319 Statut Membre 110
 
B2 touche...
C2 coule...
Pas mal :D
0
JOLARITALE Messages postés 149 Statut Membre 4
 
Bonjour,

Eriic, j'ai pas tout compris,

Zebulon, mes feuilles sont numéroté de façon croissante de 5 à 3500 mais de manières discontinue
en tout il y en a environ 350.

En cellule C6 decahque feuille il y a un nom et en cellule C7 de chaque feuille il y a un prénom

je voudrais juste les noms et prenoms pas d'autres infos.

Oui, j'ai l'affichage de base de la feuille 1
Grace a PBGunner

Merci
0
JOLARITALE Messages postés 149 Statut Membre 4
 
Bonjour,

Eriic, j'ai pas tout compris,

Zebulon, mes feuilles sont numéroté de façon croissante de 5 à 3500 mais de manières discontinue
en tout il y en a environ 350.

En cellule C6 decahque feuille il y a un nom et en cellule C7 de chaque feuille il y a un prénom

je veux juste les noms et prenoms pas d'autres infos.

Oui, j'ai l'affichage de base de la feuille 1
grace a PBGunner
0
zebulon2503 Messages postés 1319 Statut Membre 110
 
Ca se complique si tu nas pas les numeros qui se suivent....
Tas aucune regle entre les numeros ? Cest pas une suite logique ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
ccm recommence à merdouiller...
Je disais donc :
ça tombe bien, il n'y a rien à comprendre... juste la formule à recopier
eric
0
JOLARITALE Messages postés 149 Statut Membre 4
 
Wouahou c'est magique lol
je ne comprend pas, mais alors pas du tout!!!

mais c'est génial ;)
0
JOLARITALE Messages postés 149 Statut Membre 4
 
Wouhaou!!!
c'est magique!!
je ne comprend rien, mais alors rien du tout!!!

mais c'est géniale :)

Merci :)
0
JOLARITALE Messages postés 149 Statut Membre 4
 
et pendant qu'on y est y'aurais ps un truc qui me permetrait de ranger mes feuille par ordre croissant?

hihi
0
JOLARITALE Messages postés 149 Statut Membre 4
 
Wouhaou!!!
c'est magique!!
je ne comprend rien, mais alors rien du tout!!!

mais c'est géniale :)

Merci :)
0
JOLARITALE Messages postés 149 Statut Membre 4
 
oups... CCm merdouille un peu en effet... désolé pour le multipostage.... :$
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
un truc qui me permetrait de ranger mes feuille par ordre croissant?
Pas de truc non, seule une macro peut le faire.
J'ai supposé que tu voulais un tri numérique et non pas alphanumérique, le tri n'est pas optimisé mais pour 500 feuilles ça doit suffire...

A coller dans un module :
Sub TriFeuilles()
    ' Rassemble les feuilles Nxx en fin de classeur avec tri numérique sur xx
    ' Les feuilles ne commençant pas par N restent dans leur ordre d'apparition, remises au début.
    Dim i As Long, fini As Boolean
    Dim n1 As String, n2 As String, i1 As Long, i2 As Long
    Application.ScreenUpdating = True
    fini = False
    Do While Not fini
        fini = True
        For i = 1 To Worksheets.Count - 1
            n1 = Worksheets(i).Name
            n2 = Worksheets(i + 1).Name
            If Left(n1, 1) = "N" Then i1 = CLng(Mid(n1, 2)) Else i1 = 0
            If Left(n2, 1) = "N" Then i2 = CLng(Mid(n2, 2)) Else i2 = 0
            If i1 > i2 Then
                Sheets(i + 1).Move Before:=Sheets(i)
                fini = False
            End If
        Next i
    Loop
    Application.ScreenUpdating = False
End Sub


Teste mais je ne pense pas qu'il y ait des erreurs
eric
0
JOLARITALE Messages postés 149 Statut Membre 4
 
Bonjour,

Merci de m'avoir trouvé non pas un truc mais une vrais macro digne de ce nom :)

Mais, ça me donne une erreure où c'est en gras.

Sub TriFeuilles()
' Rassemble les feuilles Nxx en fin de classeur avec tri numérique sur xx
' Les feuilles ne commençant pas par N restent dans leur ordre d'apparition, remises au début.
Dim i As Long, fini As Boolean
Dim n1 As String, n2 As String, i1 As Long, i2 As Long
Application.ScreenUpdating = True
fini = False
Do While Not fini
fini = True
For i = 1 To Worksheets.Count - 1
n1 = Worksheets(i).Name
n2 = Worksheets(i + 1).Name
If Left(n1, 1) = "N" Then i1 = CLng(Mid(n1, 2)) Else i1 = 0
If Left(n2, 1) = "N" Then i2 = CLng(Mid(n2, 2)) Else i2 = 0
If i1 > i2 Then
Sheets(i + 1).Move Before:=Sheets(i)
fini = False
End If
Next i
Loop
Application.ScreenUpdating = False
End Sub

c'est grave docteur????
0
JOLARITALE Messages postés 149 Statut Membre 4
 
c'est possible que les feuilles en NXX se range à partir de la 4ème position?

Si j'en demande trop n'hésite surtout à me le dire... tu sais avec les enfants, il faut savoir leur poser des limites
hihi
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour,

Tu dois avor un nom de feuille qui commence par N et qui n'est pas suivi d'un nombre.
Si tu dois te servir souvent de la macro on completera, en attendant renomme cette feuille le temps de trier tes feuilles.

eric
0
JOLARITALE Messages postés 149 Statut Membre 4
 
j'ai renommé feuille N en N00 mais ça me donne toujours le meme message d'erreure
0
JOLARITALE Messages postés 149 Statut Membre 4
 
tu veux que je t'envoi le fichier avec ci joint?

par contre, je peut pas laisser le nom de feuille de N en N00
sinon mon autre macro va plus marcher
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Pour tester tu l'aurais appelée L ça aurait été mieux... ;-)
Je n'ai pas bcp le temps de tester mais essaie en ajoutant And IsNumeric(Mid(n1, 2))
If Left(n1, 1) = "N" And IsNumeric(Mid(n1, 2)) Then i1 = CLng(Mid(n1, 2)) Else i1 = 0
et pareil sur la 2nde ligne de test avec n2
Et devant le 1er if il faudra sans doute ajouter :
i1=0:i2=0
on error resume next
S'il y a tjs des pb dépose un fichier allégé sur cijoint oui

eric
0
JOLARITALE Messages postés 149 Statut Membre 4
 
Voila le lien du fichier...

Ya encore un soucis, cette fois ca va bien de page en page mais ca ne me les tri pas...

http://www.cijoint.fr/cjlink.php?file=cj200807/cijvIlhgcQ.xls
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Ca marche très bien chez moi.
Je récapitule avec les dernières modif :
Sub TriFeuilles()
    ' Rassemble les feuilles Nxx en fin de classeur avec tri numérique sur xx
    ' Les feuilles ne commençant pas par N restent dans leur ordre d'apparition, remises au début.
    Dim i As Long, fini As Boolean
    Dim n1 As String, n2 As String, i1 As Long, i2 As Long
    Dim actsheet As String
    Application.ScreenUpdating = False
    fini = False
    Do While Not fini
        fini = True
        For i = 1 To Worksheets.Count - 1
            n1 = Worksheets(i).Name
            n2 = Worksheets(i + 1).Name
            i1 = 0: i2 = 0
            On Error Resume Next
            If Left(n1, 1) = "N" And IsNumeric(Mid(n1, 2)) Then i1 = CLng(Mid(n1, 2)) Else i1 = 0
            If Left(n2, 1) = "N" And IsNumeric(Mid(n2, 2)) Then i2 = CLng(Mid(n2, 2)) Else i2 = 0
            If i1 > i2 Then
                Sheets(i + 1).Move Before:=Sheets(i)
                fini = False
            End If
        Next i
    Loop
    Application.ScreenUpdating = True
End Sub
0
JOLARITALE Messages postés 149 Statut Membre 4
 
la je ne comprend pas...

j'ai essayé d'exécuter la macro sur le gros fichier rien a faire, il bugg... je l'ai laissé travaillé 35min sans arriver à l'ouvrire après...

Et apres j'ai éssayé sur le fichier leger que je t'ai envoyer et la pas de soucis et en un rien de temps en plus...

le déséspoir me guette...
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Pour savoir où en est la macro l'arreter temporairement avec Ctrl+Pause.
Dans VBA placer le curseur souris sur la variable i, attendre que sa valeur s'affiche.
Si i < au nombre de feuilles c'est qu'elle n'a pas fini...
Si il est plus grand c'est qu'il y a réelllement un bug
Relancer par F5, l'arreter à nouveau pour voir si i a évolué.

eric
0
JOLARITALE Messages postés 149 Statut Membre 4
 
c'est normal que les valeur de I ne se suivent pas?

j'ai eu 131 puis 124 et après 135.
0