Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Une feuille de résultats pour un nombre de feuille aléatoir

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Valentin_Loupe

XLDnaute Occasionnel
Bonjour à tous,

Je voudrais savoir si il est possible de faire un fichier avec une feuille "Résultats" et des autres feuilles que l'on pourrait créer en nombre illimité nommées "Pièce n°1", "Pièce n°2", "Pièce n°3"... avec un bouton nommé "Créer une feuille" présent sur la feuille "Résultat".

Aussi, est-il possible dans la feuille "Résultats" de générer un tableau avec en première colonne le nom de l'onglet des autres pages ("Pièce n°1", "Pièce n°2", "Pièce n°3"...) et en seconde colonne chaque case D5 de chaque feuille ("Pièce n°1", "Pièce n°2", "Pièce n°3"...).

Je vous remercie par avance,

Valentin
 
Re : Une feuille de résultats pour un nombre de feuille aléatoir

Bonsoir,
regarde le fichier joint

le code :

Code:
Sub extraire()
Application.ScreenUpdating = False
For Each sh In Sheets
    If sh.Name <> "Résultat" Then
        x = Right(sh.Name, Len(sh.Name) - 8)
        Cells(x + 1, 1) = sh.Name: Cells(x + 1, 2) = sh.[D5]
    End If
Next sh

End Sub
Sub creer()
Application.ScreenUpdating = False
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Pièce n°" & Sheets.Count
Sheets("Résultat").Select
End Sub
 

Pièces jointes

Re : Une feuille de résultats pour un nombre de feuille aléatoir

Bonsoir bhbh, bonsoir à tous,

Ouép merci pour ta réponse rapide ! C'est ça que je cherchais. Par contre je débute en programmation, pourrais tu me détailler un peu ton programme pour que je puisse comprendre comment tu as procédé en me disant quoi est quoi et à quelle ligne il se passe quoi ?

Encore merci !!!

Valentin
 
Re : Une feuille de résultats pour un nombre de feuille aléatoir

Re-,

Code:
Sub extraire()
Application.ScreenUpdating = False  'Fige le raffraichissement de l'écran
For Each sh In Sheets   'pour chaque onglet dans le classeur(on scanne toutes les feuilles)
    If sh.Name <> "Résultat" Then   'Si le nom de l'onglet est différent de :...
        x = Right(sh.Name, Len(sh.Name) - 8)  'on cherche son numéro, c'est à dire qu'on
                                                'extrait le ou les dernières lettres à droite
                                                ' du nom de l'onglet en fonction du nombre
                                                ' de lettres dans ce nom
        Cells(x + 1, 1) = sh.Name: Cells(x + 1, 2) = sh.[D5] 'la cellule de la ligne (x+1) donc
                                                ' si l'onglet est le 5, ligne 6, et de la colonne
                                                ' 1 récupère le nom de l'onglet
                                                ' la cellule d'à côté récupère la valeur de D5 de l'onglet
    End If
Next sh

End Sub
Sub creer()
Application.ScreenUpdating = False
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Pièce n°" & Sheets.Count
        ' on insère un nouvel onglet, après le dernier onglet, et avec comme nom "Pièce n°" et
        ' nombre d'onglets
Sheets("Résultat").Select
End Sub
 
Re : Une feuille de résultats pour un nombre de feuille aléatoir

Re,

Oki merci, c'est vraiment intéressant comme méthode !
Heu, je voudrais savoir par contre si je renomme un onglet le fonctionnement ne sera plus identique ?

Car moi en fait, j'aurais besoin de créer différentes pages qui initialement s'appelleraient "Pièce n°1", "Pièce n°2", "Pièce n°3"... mais dans chacune de ces feuilles il y aurait une cellule dans laquelle on pourrait indiquer un nouveau nom qui viendrait aussitot se placer en nom d'onglet et le remplacer.

Ainsi en fait, à partir d'une page (ici : "Résultats"), on crée par exemple une feuille qui s'appelle "Pièce n°3" (en admettant que deux autres ont été crées auparavant) et dans cette feuille on a une cellule dans laquelle on indique la pièce étudiée : par exemple on remplace "Pièce n°3" par "Salle de bain". Aussitôt le nom d'onglet change en "Salle de bain".

Le problème c'est que si je décide de recréer une pièce par la suite alors le nom va être différent.

Encore merci

Valentin
 
Re : Une feuille de résultats pour un nombre de feuille aléatoir

Salut Valentin

entre le nom de ta feuille en A1
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
teste si target est bien en A1 pour que la procédure ne s'active pas inutilement
    ActiveSheet.Name = Range("A1").Value
ensuite envoie également le nom dans ta première feuille
End Sub
 
Dernière édition:
Re : Une feuille de résultats pour un nombre de feuille aléatoir

Re-,
pas de problème, mais il faudra repenser le code pour la feuille "Résultat", et ne plus utiliser le chiffre de fin, mais faire une recopie de la cellule A2:B2 vers le bas
 
Re : Une feuille de résultats pour un nombre de feuille aléatoir

Bonsoir phlaurent55,

Merci pour ta réponse ! Mais en fait ça je voulais l'intégrer à ce que bhbh a fait juste avant et que je puisse insérer des nouvelles feuilles avec comme nouveau nom "Pièce n°..." même si le nom à changé après cette manipulation.

Valentin
 
Re : Une feuille de résultats pour un nombre de feuille aléatoir

Re-,
le code modifié :

Code:
Sub extraire()
Application.ScreenUpdating = False
derlig = IIf([A65000].End(xlUp).Row = 1, 2, [A65000].End(xlUp).Row + 1)
Range("A2:B" & derlig).ClearContents
For Each sh In Sheets
    If sh.Name <> "Résultat" Then
        derlig = IIf([A65000].End(xlUp).Row = 1, 2, [A65000].End(xlUp).Row + 1)
        With Range("A" & derlig)
            .Value = sh.Name
            .Offset(0, 1).Value = sh.[D5]
        End With
    End If
Next sh
End Sub
 
Re : Une feuille de résultats pour un nombre de feuille aléatoir

Bonsoir à tous,

C'est impeccable, nickel chrome même !

Autres petites questions :

A quoi cela sert il de figer le rafraichissement de l'écran avec les lignes : Application.ScreenUpdating = False ? Car quand je retire la ligne je ne vois pas grande différence ! Et vu que l'on désactive le refraichissement, se réactive t'il par la suite ?

Aussi, comment procéder si par exemple je veux, en cliquant sur le bouton "Extraire", réimporter plus qu'une cellule ? Je m'explique : sur la feuille "Résultat", on laisse comme ca (fonctionnement avec D5) mais en plus à droite des valeurs qui s'inscrivent déjà lors du clic sur "Extraire", on ajoute 5 colonnes au tableau qui ramènent les valeurs des cellules E6 ; F9 ; J11 ; H4 et M2 de chaque feuille ?

PS : J'ai remis le fichier à jour

Merci encore

Valentin
 

Pièces jointes

Dernière édition:
Re : Une feuille de résultats pour un nombre de feuille aléatoir

Salut Valentin,le forum
je pense que bhbh a oublié
Code:
Application.ScreenUpdating = True
End Sub
juste avant le fin de la procédure

Cette fonction sert à éviter le "clignottement" disgrâcieux qui pourrait se produire à l'écran

Ca ne pose peut-être pas un gros problème dans ton cas vu que ta procédure est assez courte mais dans le cas de procédures plus longues avec éventuellement des sélections de cellules, des déplacements de données,des boucles à n'en pas finir, ...............cette fonction s'avère bien utile
à+
 
Re : Une feuille de résultats pour un nombre de feuille aléatoir

Bonsoir phlaurent55,

Merci pour cette info supplémentaire ! Je vais donc rajouter la ligne dans un autre programme dans lequel la procédure est en effet un peu plus longue et l'effet de clignotement est plus visible !

@+++

PS : Pensez à regarder deux discussions (#11) ci-dessus, j'ai posté une autre question

Valentin
 
Dernière édition:
Re : Une feuille de résultats pour un nombre de feuille aléatoir

Bonsoir à tous,

Maintenant comment procéder si par exemple je veux, en cliquant sur le bouton "Extraire", réimporter plus qu'une cellule ?

Je m'explique : sur la feuille "Résultat", on laisse comme ca (fonctionnement avec D5) mais en plus à droite des valeurs qui s'inscrivent déjà lors du clic sur "Extraire", on ajoute 5 colonnes au tableau qui ramènent les valeurs des cellules E6 ; F9 ; J11 ; H4 et M2 de chaque feuille ?

PS : J'ai remis le fichier à jour

Merci encore

Valentin
 

Pièces jointes

Re : Une feuille de résultats pour un nombre de feuille aléatoir

Bonsoir,
remplace ton code par celui-ci :

Code:
Sub extraire()
Application.ScreenUpdating = False
derlig = IIf([A65000].End(xlUp).Row = 1, 2, [A65000].End(xlUp).Row + 1)
Range("A2:G" & derlig).ClearContents
For Each sh In Sheets
    If sh.Name <> "Résultat" Then
        derlig = IIf([A65000].End(xlUp).Row = 1, 2, [A65000].End(xlUp).Row + 1)
        With Range("A" & derlig)
            .Value = sh.Name
            .Offset(0, 1).Value = sh.[D5]
            .Offset(0, 2).Value = sh.[E6]
            .Offset(0, 3).Value = sh.[F9]
            .Offset(0, 4).Value = sh.[J11]
            .Offset(0, 5).Value = sh.[H4]
            .Offset(0, 6).Value = sh.[M2]
        End With
    End If
Next sh
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
14
Affichages
377
Réponses
2
Affichages
286
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…