onglet avec macro(rectificatif)

  • Initiateur de la discussion Initiateur de la discussion laplayast
  • 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 !

laplayast

XLDnaute Occasionnel
Bonsoir,

Tout d'abord,merci à tous les contributeurs sans qui,je n'aurai pas avancé sur mon projet,et sans un forum de ce type;je pense à un nombre important de sujet qui n'auraient,pas trouve de solution;car on à pas forcement le temps.
Bravo, à tous.

Mais, je n'ai pas encore bouclé mon projet et j'espère, trouver une solution
qui je pense ne doit être,trop compliqué.
Problematique:
l'étape 1 consiste à créer des onglets à partir de l'onglet modéle,qui s'appelleront modéle1,modéle2,modéle3....incrément+1;ainsi de suite tant que la procédure est activée par un bouton.
En même temps, on récupère les données des cellules en bleu,de l'onglet modéle n-1,vers l'onglet "modéle1,des cellules de la case A en jaune;et également les cellules en rose ...."Puis de modéle1 vers modéle2 et ainsi de suite.Pour être plus clair, on récupère les données,aprés chaque onglet ajouté.
ci-joint le fichier.

Merci à tous
 

Pièces jointes

Re : onglet avec macro(rectificatif)

Bonsoir

Ci dessous le code pour créer les feuilles
Code:
Sub creation()
Dim Sh As Worksheet
Dim i As Integer
Dim j As Integer
    For Each Sh In Worksheets
        If Sh.Name <> "modéle" Then
            If InStr(Sh.Name, "modéle") > 0 Then
                j = CInt(Replace(Sh.Name, "modéle", ""))
                If j > i Then i = j
            End If
        End If
    Next Sh
 With Sheets("modéle")
        .Copy after:=Sheets(Sheets.Count)
  '      On Error GoTo PbNomFeuille
        ActiveSheet.Name = "modéle" & i + 1  '' référence"
    End With
'


End Sub

Pour les copies je n'ai pas tout compris.


JP
 
Re : onglet avec macro(rectificatif)

Bonsoir,
Merci,pour ce début;l'opération suivante consiste à copier de la feuille"modele"
dans un premier temps les cellules bleues de la case B,vers la feuille "modele1"
de la case A;et les cellules en roses également de la feuille "modele",vers la feuille "modele1.Et ainsi de suite à chaque création de feuille;avec incrementation de modèle n+1 et en récupérant les données de la feuille précedente sur le même principe.
J'espére ne pas avoir éte trop compliqué.
@bientôt.
laplayast😉
 
Re : onglet avec macro(rectificatif)

Bonsoir,
Merci,pour ce début;l'opération suivante consiste à copier de la feuille"modele"
dans un premier temps les cellules bleues de la case B,vers la feuille "modele1"
de la case A;et les cellules en roses également de la feuille "modele",vers la feuille "modele1. @bientôt.
laplayast😉

Cette fonction est de base, les feuilles crées sont des copies de la feuille modèle.

JP
 
Re : onglet avec macro(rectificatif)

bonsoir,
Il s'agit de copier les cellules"H28 à H34 et I28 à I34,de la feuille modèle vers la feuille modèle1, vers les cellules "C28 à D34.Cette opération se répète à chaque fois par rapport à la feuille précédente ;avec les cellules roses en plus.
Merci de ton aide
@+
 
Re : onglet avec macro(rectificatif)

Bonjour

Ci dessous le code à terminer et à copier en fin de procédure
Code:
With Sheets("modéle" & i + 1)
'copier les cellules"H28 à H34 et I28 à I34,de la feuille modèle _
vers la feuille modèle1, vers les cellules "C28 à D34
    For j = 28 To 34
        .Range("C" & j).Value = Sheets("modéle").Range("h" & j).Value
        .Range("d" & j).Value = Sheets("modéle").Range("i" & j).Value
    Next j
    ' compléter pour les cellules roses
    .Range("C11").Value = Sheets("modéle").Range("C11").Value
    
End With

JP
 
Re : onglet avec macro(rectificatif)suite

Bonsoir,
Le code,fonctionne correctement dans le principe;jusqu'au'modéle1'mais à partir
du"modéle2"il reprend les valeurs de la feuille "modéle";alors que je souhaiterai
les valeurs de la feuille "modéle1".
Si modéle3,récuperer les donneés de la feuille modele 2;et ainsi de suite.
L'idée est de créer une feuille n+1,et de récuperer les données de la feuille n-1.

Merci de ton aide,sans cela j'aurai du mal 😉
laplayast.
ci-joint le code:
Sub creation()
Dim Sh As Worksheet
Dim i As Integer
Dim j As Integer
For Each Sh In Worksheets
If Sh.Name <> "modéle" Then
If InStr(Sh.Name, "modéle") > 0 Then
j = CInt(Replace(Sh.Name, "modéle", ""))
If j > i Then i = j
End If
End If
Next Sh
With Sheets("modéle")
.Copy after:=Sheets(Sheets.Count)
' On Error GoTo PbNomFeuille
ActiveSheet.Name = "modéle" & i + 1 '' référence"
End With
'

With Sheets("modéle" & i + 1)
'copier les cellules"H28 à H34 et I28 à I34,de la feuille modèle _
vers la feuille modèle1, vers les cellules "C28 à D34
For j = 28 To 34
.Range("C" & j).Value = Sheets("modéle").Range("h" & j).Value
.Range("d" & j).Value = Sheets("modéle").Range("i" & j).Value
Next j
' compléter pour les cellules roses
.Range("C11").Value = Sheets("modéle").Range("C11").Value

End With
End Sub
 
Re : onglet avec macro(rectificatif)

Bonsoir

Ci joint le fichier avec une procédure pour créer et recopier les données.
Recopie de la feuille n-1 vers la feuille n, puis de la feuille n-2 vers la feuille n-1, ...

A tester et à simplifier éventuellement et à compléter.

JP
 

Pièces jointes

Re : onglet avec macro(rectificatif)

Bonjour

Ci dessous le code à modifier. Il manquait une déclaration de variables
Code:
Private Sub recopie(nomforig As String, nomfdest As String)
Dim £j As Integer
With Sheets(nomfdest)
'copier les cellules"H28 à H34 et I28 à I34,de la feuille modèle _
vers la feuille modèle1, vers les cellules "C28 à D34
    For £j = 28 To 34
        .Range("C" & £j).Value = Sheets(nomforig).Range("h" & £j).Value
        .Range("D" & £j).Value = Sheets(nomforig).Range("i" & £j).Value
    Next £j
    ' compléter pour les cellules roses
    .Range("C11").Value = Sheets(nomforig).Range("C11").Value
    
End With
End Sub

JP
 
Re : onglet avec macro(rectificatif)

Bonjour,
Encore,bravo pour ton aide;sans quoi j'aurai planché,et surtout séché.😉.
Le projet,commence à prendre corps;mais il reste 2 mises au points.
Problématique:Avec le bouton création,je suis arrivé à créer 54 onglets;au delà
apparait l'erreur d'execution"1004"la mèthode copy de la classe worksheet à echoué.Je pensai que l'on eté limité par rapport à la memoire du pc.Suis-je,
dans le vrai?Mais il faudrait que j'aille à 64 onglets.
2/Je souhaiterai également,tester une serie de cellules: si "vides" messagebox;compléter avant de copier.Peux-tu me m'aider.
Merci@+
LAPLAYAST
ci-joint,fichier test code
 

Pièces jointes

Re : onglet avec macro(rectificatif)

Bonjour

Le nombre de feuille est limite dans excel.
J'en ai crée plus de 80

Ci dessous un exemple de code à mettre au début de la procédure

Code:
 With Sheets("modéle")
        If .Range("a1").Value = "" Then
        Call MsgBox("Vous dever renseigner la cellule", vbInformation, Application.Name)
        .Range("a1").Select
        Exit Sub
        End If
End With

A tester

JP
 
Re : onglet avec macro(rectificatif)

Le code que j'utilise actuellement;si je place ton code l'erreur suivante apparait"instruction incorrecte à l'exterieur d'une procédure"comment faire?
MERCI
LAPLAYAST@+

Option Explicit
Sub creation()
Dim Sh As Worksheet
Dim i As Integer
Dim j As Integer
Dim nu() As String
For Each Sh In Worksheets
If Sh.Name <> "modéle" Then
If InStr(Sh.Name, "modéle") > 0 Then
j = CInt(Replace(Sh.Name, "modéle", ""))
If j > i Then i = j
End If
End If
Next Sh
With Sheets("modéle")
.Copy after:=Sheets(Sheets.Count)
' On Error GoTo PbNomFeuille
ActiveSheet.Name = "modéle" & i + 1 '' référence"
End With
'
' on met les noms dans un tableau
ReDim nu(Sheets.Count)
For Each Sh In Worksheets
If Sh.Name <> "modéle" Then
If InStr(Sh.Name, "modéle") > 0 Then
j = CInt(Replace(Sh.Name, "modéle", ""))
nu(j) = Sh.Name
End If
End If
Next Sh
' on recopie les données de l'avant dernier dans le dernier
For j = UBound(nu) To LBound(nu) Step -1
If nu(j) <> "" Then
i = 1
If j > 1 Then
Do
If nu(j - i) <> "" Then Exit Do
i = i + 1
If i > Sheets.Count Then Exit Do ' sortie si problème
Loop

i = j - i
Call recopie(nu(i), nu(j))
Else
Call recopie("modéle", nu(j))
End If
End If
Next j
End Sub
Private Sub recopie(nomforig As String, nomfdest As String)
Dim £j As Integer
With Sheets(nomfdest)
'copier les cellules"H28 à H34 et I28 à I34,de la feuille modèle _
vers la feuille modèle1, vers les cellules "C28 à D34
For £j = 28 To 34
.Range("C" & £j).Value = Sheets(nomforig).Range("h" & £j).Value
.Range("D" & £j).Value = Sheets(nomforig).Range("i" & £j).Value
Next £j
' compléter pour les cellules roses
.Range("C11").Value = Sheets(nomforig).Range("C11").Value
.Range("D14").Value = Sheets(nomforig).Range("D14").Value
.Range("H14").Value = Sheets(nomforig).Range("H14").Value
.Range("I11").Value = Sheets(nomforig).Range("I11").Value
End With
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

C
Réponses
4
Affichages
1 K
cecenico
C
P
Réponses
0
Affichages
1 K
Ptinotsgnik
P
E
Réponses
2
Affichages
1 K
elsabio77
E
I
Réponses
11
Affichages
1 K
I
J
  • Question Question
Réponses
1
Affichages
2 K
R
Réponses
4
Affichages
817
R
Retour