• Initiateur de la discussion Initiateur de la discussion nenex
  • Date de début Date de début

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 !

N

nenex

Guest
slt
Je vais essayer d'etre clair dans mon explication 🙂

J'ai cette macro :
ub formulefeuille()

Dim nombre As Integer
Dim nom As String

nombre = 10 ' nombre de feuilles à créer

For b = 1 To nombre
Sheets("feuille 01").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "feuille 0" & (b + 1)
nom = "'feuille 0" & b & "'" ' les 2 lignes sont décomposées pour plus de clarté
Cells(1, 8).Formula = "=" & nom & "!H1+1"
Next b
End Sub

Je voudrais l'utiliser pour plusieur fichier, mais chaque fichier aura un nom diferent et des noms d'onglet different :
- dans le fichier nommé fichier 01 les onglets sont nommés onglet 01, onglet 02,... jusqu'a onglet 10
- dans le fichier nommé fichier 02 les onglets sont nommés onglet 11, onglet 12,... jusqu'a onglet 20
- dans le fichier nommé fichier 03 les onglets sont nommés onglet 21, onglet 22,... jusqu'a onglet 30
- etc...

J'arrive pas a voir comment faire pour utiliser la meme macro pour chaque fichier de maniere a pouvoir changer les noms des onglets.
Merci d'avance pour votre aide.
(j'espere avoir ete clair dans mes explications🙄 🙂
 
Re : Modifier ma macro

Bonjour,
Un truc du style ci dessous devrait fonctionner (Non testé):
Code:
Sub formulefeuille()
'***Suppose que tous les classeurs concernés sont ouverts
Dim Classeur As String
Dim nombre As Integer
Dim i as byte, b as byte

For i = 1 To 20
    If i < 10 Then
        Classeur = "Fichier 0" & i
        Else
        Classeur = "Fichier " & i
    End If

    nombre = 10 ' nombre de feuilles à créer
    
    With Workbooks(Classeur)
        For b = 1 To nombre
            .Sheets("feuille 01").Copy After:=.Sheets(Sheets.Count)
            .Sheets(Sheets.Count).Name = "feuille " & 10 * (i - 1) + b
            If i = 1 Then .Sheets(Sheets.Count).Name = "feuille 0" & 10 * (i - 1) + b
            'Cells(1, 8).Formula = "=" & nom & "!H1+1"
        Next
    End With
Next

End Sub
A tester et adapter donc
Cordialement
 
Re : Modifier ma macro

Bonjour Nenex, Spitnolan

une autre solution si j'ai bien compris ta demande, suppose que tu travailles sur un seul classeur ouvert, on peut bien évidement boucler sur tous les classeurs...à tester...

Code:
Option Explicit
Sub test()
Dim x As String, a As Byte, z As Byte, b As Byte
x = Mid(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5, 2)
Select Case x
Case "01"
    a = 1: z = 10
Case "02"
    a = 11: z = 20
Case "03"
    a = 21: z = 30
Case Else
    Exit Sub
End Select
For b = a + 1 To z
    Sheets("feuille " & Format(a, "00")).Copy After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = "feuille " & Format(b, "00")
Next b
End Sub

bon après midi
@+

Edition variable x non déclaré.
 
Dernière édition:
Re : Modifier ma macro

je viens de me rendre compte d'un truc : quand je dit onglet je veux parler des feuilles. Je pense que vous aviez traduit 😀 ?
Donc dans un fichier j'aurais 10 feuilles (j'en aurai beaucoup plus mais c'est pour l'exemple) :
- fichier 01 de la feuille 01 a la feuille 10
- fichier 02 de la feuille 11 a la feuille 20
- fichier 03 de la feuille 21 a la feuille 30
- fichier 04 de la feuille 31 a la feuille 40
(en gras c'est le nom des fichier et des feuilles)

Spitnolan08 : j'ai remplacer la macro que j'avais avant par la tienne et quand j'ai executer ta macro j'ai eu l'erreur suivante :
Erreur d'execution '9': l'indice n'appartient pas a la selection.
J'ai clique sur debogage et la ligne With Workbooks(Classeur) etait surlignee en jaune.
Heuuu ouai bon, et alors ? 😀

Pierrot93 : pour ta macro je doit prevoir le nombre de fichiers a l'avance ? je te demande par rapport a ca :
Case "01"
a = 1: z = 10
Case "02"
a = 11: z = 20
Case "03"
a = 21: z = 30
Je vous avous que je nage un peu 🙄
 
Re : Modifier ma macro

Re

oui, tu rajoutes des lignes

Code:
Case "XX"
a = 21: z = X0

si tu en as vraiment beaucoup, ca risque d'être dur à gérer..

il faut savoir précisément ce que tu comptes faire...

Tous tes fichiers seront ils ouverts ?

faut il boucler sur tous les classeurs ouverts ?

J'ai du mal à voir le but final de tout cela...

bonne soirée
@+
 
Re : Modifier ma macro

Re,
Remplace le code que je t'ai donné par celui ci (Testé) :
Code:
Sub formulefeuille()
'***Suppose que tous les classeurs concernés sont ouverts
Dim Classeur As String
Dim nombre As Integer
Dim ClassOrigin As String

'***Détermine le nom du classeur dans lequel se situe la macro (N'importe quel classeur)
ClassOrigin = ThisWorkbook.Name

For i = 1 To 4 'Si tu as seulement 4 fichiers :Fichier 01, Fichier 02, Fichier 03, et Fichier 04 sinon changer la borne
    If i < 10 Then
        Classeur = "Fichier 0" & i
        Else
        Classeur = "Fichier " & i
    End If

    nombre = 10 ' nombre de feuilles à créer
    
    '***Active le bon Fichier et duplique les feuilles en leur associant un nom
    With Workbooks(Classeur & ".xls")
        For b = 1 To nombre
            .Sheets("[COLOR=Red]feuille1[/COLOR]").Copy After:=.Sheets(.Sheets.Count)
            .Sheets(Sheets.Count).Name = "feuille " & 10 * (i - 1) + b
            If 10 * (i - 1) + b < 10 Then .Sheets(.Sheets.Count).Name = "feuille 0" & 10 * (i - 1) + b
            'Cells(1, 8).Formula = "=" & nom & "!H1+1"
        Next
    End With
Next
'***Revient au classeur dans lequel se situe la macro
Workbooks(ClassOrigin).Activate
End Sub
Nécessite que chaque fichier soit ouvert et qu'ils possèdent une feuille nommée "feuille1" que tu vas dupliquer (Sinon changer le nom en rouge dans le code)
Cordialement
 
Dernière édition:
Re : Modifier ma macro

Re,
Pour répondre à ta question :
J'ai clique sur debogage et la ligne With Workbooks(Classeur) etait surlignee en jaune.
Heuuu ouai bon, et alors ? 😀
En fait, il fallait noter : With Workbooks(Classeur & ".xls") car sans l'extension le code ne reconnaissait pas le fichier.
Voilà c'est tout bête...

Cordialement
 
Re : Modifier ma macro

Je bataille trop, ca veux pas marcher. Je voudrais savoir un truc. A koi correspond, dans ma macro :
feuille 01 (format du nom des cellule y me semble)
feuille 0
feuille 0

ub formulefeuille()

Dim nombre As Integer
Dim nom As String

nombre = 10 ' nombre de feuilles à créer

For b = 1 To nombre
Sheets("feuille 01").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "feuille 0" & (b + 1)
nom = "'feuille 0" & b & "'" ' les 2 lignes sont décomposées pour plus de clarté
Cells(1, 8).Formula = "=" & nom & "!H1+1"
Next b
End Sub
 
Re : Modifier ma macro

Re à tous,
A koi correspond, dans ma macro :
feuille 01 (format du nom des cellule y me semble)
Dans la tienne comme dans la mienne cela correspond aussi au nom de la feuille Excel que tu veux recopier.

Mais pourquoi ne veux tu pas utiliser les codes que l'on t'a transmis et qui fonctionnent ??

Si tu veux que l'on t'aide efficacement il faudrait que tu envoies un bout de tes fichiers.

Cordialement
 
Dernière édition:
Re : Modifier ma macro

merci pour les fichiers. Seulement le nom des feuille est le meme dans chaque fichier. Moi j'aimerais qu'ils se suivent par rapport a chaque fichier :

- fichier 01 de la feuille 01 a la feuille 10
- fichier 02 de la feuille 11 a la feuille 20
- fichier 03 de la feuille 21 a la feuille 30
- fichier 04 de la feuille 31 a la feuille 40
- etc.
 
Re : Modifier ma macro

Bonsoir Nenex,

Je pense que tu n'as pas du bien regarder car c'est exactement ce qui se passe... En tout cas chez moi!

Cordialement

Edit: Je viens de vérifier par acquis de conscience et je te confirme... Attention : Le résultat s'affiche en français et pas en basque 😛
 
Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
  • Question Question
Réponses
5
Affichages
249
Didierpasdoué
D
  • Question Question
Microsoft 365 Problème macro
Réponses
4
Affichages
433
Retour