VBA Excel creer plusieurs feuilles
Résolu
9
-
melanie1324 Messages postés 1561 Statut Membre -
melanie1324 Messages postés 1561 Statut Membre -
Dim NbrSemAffaire As Integer
Dim cptr As Byte
NbrSemAffaire = 64
' Creer nouvelle feuille
'=========================================================
Application.ScreenUpdating = False
For cptr = 2 To NbrSemAffaire
'je cree une feuille vierge
Sheets.Add.Move After:=Sheets(Sheets.Count)
'je copie la feuille vierge que je mets en derniere position
ActiveSheet.Copy After:=Sheets(cptr + 3) 'cptr+3 car j'ai deja 5 feuilles de crées
'je nomme ma feuille
With Sheets(cptr + 4)
.Name = "S" & cptr - 1
'je supprime la feuille vierge dont j'ai plus besoin
Sheets(Sheets.Count).Delete
'je selectinne ma nouvelle feuille Si pour i= 1 à Nombre de semaine de l'affaire
Sheets(cptr + 4).Select
'j'insere le numero de la semaine dans la case semaine
Selection.Cells(2, 2).Value = Sheets(cptr + 4).Name
End With
Next
Le code marche bien, le seul hic c que quand je delete ma feuille qui m'as servis de reference , il me fait : etes vous sure de vouloir supprimer le contenu de cte feuille a chaque fois, et ceux pour les 64 feuilles.
ya t'il un moyen de forcer excel a faire ce que je lui demande sans qu'il me dise a chaque etes vous sure de vouloir effacé?
config>Windows XP / Safari 525.28.1</config>
Dim cptr As Byte
NbrSemAffaire = 64
' Creer nouvelle feuille
'=========================================================
Application.ScreenUpdating = False
For cptr = 2 To NbrSemAffaire
'je cree une feuille vierge
Sheets.Add.Move After:=Sheets(Sheets.Count)
'je copie la feuille vierge que je mets en derniere position
ActiveSheet.Copy After:=Sheets(cptr + 3) 'cptr+3 car j'ai deja 5 feuilles de crées
'je nomme ma feuille
With Sheets(cptr + 4)
.Name = "S" & cptr - 1
'je supprime la feuille vierge dont j'ai plus besoin
Sheets(Sheets.Count).Delete
'je selectinne ma nouvelle feuille Si pour i= 1 à Nombre de semaine de l'affaire
Sheets(cptr + 4).Select
'j'insere le numero de la semaine dans la case semaine
Selection.Cells(2, 2).Value = Sheets(cptr + 4).Name
End With
Next
Le code marche bien, le seul hic c que quand je delete ma feuille qui m'as servis de reference , il me fait : etes vous sure de vouloir supprimer le contenu de cte feuille a chaque fois, et ceux pour les 64 feuilles.
ya t'il un moyen de forcer excel a faire ce que je lui demande sans qu'il me dise a chaque etes vous sure de vouloir effacé?
config>Windows XP / Safari 525.28.1</config>
A voir également:
- VBA Excel creer plusieurs feuilles
- Créer liste déroulante excel - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Créer un lien pour partager des photos - Guide
20 réponses
(Ne pas oublier le ) Bonjour,
A priori ceci :
Application.DisplayAlerts = False
Worksheets(".....").Delete
Application.DisplayAlerts = True
A+
A priori ceci :
Application.DisplayAlerts = False
Worksheets(".....").Delete
Application.DisplayAlerts = True
A+
Bonjour,
Desole pour(le bonjour) c'est juste une erreur de frappe.
Un grand merci pour ton aide, c exactement ce qu'il me fallait.
j'auraias une derniere question .
J'ai 2 Sub et jer voudrais savoir comment faire pour executer la deuxieme des que je termine la premiere?
Je sais aps si c clair,
Voici une partie du code : pe etre que que tu comprendras mie .
sub xxx()
...............................................
Next
MsgBox "Veuillez saisir les taches désirés", vbOKOnly + vbInformation, " "
Sheets("Nomenclature 1").Select
End Sub
Sub SelectionnerCellules()
'Supprimer toutes les cellues en dessous de la ligne 6
'=================================================
For j = 6 To Sheets.Count
Sheets(j).Select
Range("A6:I3500").Select
Selection.EntireRow.Delete
Range("B6").Select
Next j
Sheets("Nomenclature 1").Select
'Colorier les sellules selectionnées pour pouvoir les reperer apres
'=================================================
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Selection.Copy
'==============================================================================================================================
' COPIER LES TACHES SELECTIONNES
'==============================================================================================================================
Sheets(Sheets.Count - NbrSemAffaire).Select
Range("B6").Select
ActiveSheet.Paste
...........................................
End sub
Je ve que quand je finis mon premier sub et qu'il me dise selectionne tes taches, je selectionnes les taches que je ve et que la deuxieme sub se mettent en route directement.
Je sais aps si c clair?
Merci d'avance pr ton aide
Desole pour(le bonjour) c'est juste une erreur de frappe.
Un grand merci pour ton aide, c exactement ce qu'il me fallait.
j'auraias une derniere question .
J'ai 2 Sub et jer voudrais savoir comment faire pour executer la deuxieme des que je termine la premiere?
Je sais aps si c clair,
Voici une partie du code : pe etre que que tu comprendras mie .
sub xxx()
...............................................
Next
MsgBox "Veuillez saisir les taches désirés", vbOKOnly + vbInformation, " "
Sheets("Nomenclature 1").Select
End Sub
Sub SelectionnerCellules()
'Supprimer toutes les cellues en dessous de la ligne 6
'=================================================
For j = 6 To Sheets.Count
Sheets(j).Select
Range("A6:I3500").Select
Selection.EntireRow.Delete
Range("B6").Select
Next j
Sheets("Nomenclature 1").Select
'Colorier les sellules selectionnées pour pouvoir les reperer apres
'=================================================
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Selection.Copy
'==============================================================================================================================
' COPIER LES TACHES SELECTIONNES
'==============================================================================================================================
Sheets(Sheets.Count - NbrSemAffaire).Select
Range("B6").Select
ActiveSheet.Paste
...........................................
End sub
Je ve que quand je finis mon premier sub et qu'il me dise selectionne tes taches, je selectionnes les taches que je ve et que la deuxieme sub se mettent en route directement.
Je sais aps si c clair?
Merci d'avance pr ton aide
Bonjour,
merci encore une fois,
et si on veut appeler une variable d'une autre procedure?
genre si je ve faire faire call i avec i variable defini dans ma premiere procedure, ca marche pas.
J'ai vu sur l'aide call ne marche quavec les procedure et fonction.
Comment faire pour les variables?
Merci d'avance
merci encore une fois,
et si on veut appeler une variable d'une autre procedure?
genre si je ve faire faire call i avec i variable defini dans ma premiere procedure, ca marche pas.
J'ai vu sur l'aide call ne marche quavec les procedure et fonction.
Comment faire pour les variables?
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour,
il faut 2 choses,
tu écris call + nom macro + (nom de tes variables
sub macro (nom de tes variables).
Dans ton ex :
call SelectionnerCellules (i)
sub selectionnercellules(i)
il faut 2 choses,
tu écris call + nom macro + (nom de tes variables
sub macro (nom de tes variables).
Dans ton ex :
call SelectionnerCellules (i)
sub selectionnercellules(i)
Bonjour,
T génial MELANIE, grace a toi j'ai grave avancer mon projet auj. Un grand merci pr tout.
Une derniere question, avt de te lacher les baskets car j'ai un peu abuser.
j'ai 2 Procedures, je ne ve executer la premiere que quand je lance ma macro la premiere fois. ensuite si je relance ma macro je ve qu'elle me reexecuter que ma deuxieme macro.
Est ce que C possible?
Si oui t'aurais une petite idée de comment faire?
T génial MELANIE, grace a toi j'ai grave avancer mon projet auj. Un grand merci pr tout.
Une derniere question, avt de te lacher les baskets car j'ai un peu abuser.
j'ai 2 Procedures, je ne ve executer la premiere que quand je lance ma macro la premiere fois. ensuite si je relance ma macro je ve qu'elle me reexecuter que ma deuxieme macro.
Est ce que C possible?
Si oui t'aurais une petite idée de comment faire?
re,
c'est possible.
tu fais une 3e macro :
sub premiere
a = cells(1,1) 'tu prends une cellule ou tu tu es sure qu'il n'y auras jamais de données, le premier chiffre ligne, le 2nd colonne
if a = "" then
call (première procédure)
else
call (seconde procédure)
end if
end sub
dans ta première procédure, avant le end sub tu mets :
cells(1,1) = "première fois"
dans ta seconde procédure avant le end sub tu mets :
cells(1,1) = ""
ainsi quand tu déclenches pour la première fois, ta première procédure mettras une valeur dans la cellule.
Si il y a une valeur, tu appelles ta seconde procédure;
Si iln'yen a pas, il alnceras ta première procédure.
c'est possible.
tu fais une 3e macro :
sub premiere
a = cells(1,1) 'tu prends une cellule ou tu tu es sure qu'il n'y auras jamais de données, le premier chiffre ligne, le 2nd colonne
if a = "" then
call (première procédure)
else
call (seconde procédure)
end if
end sub
dans ta première procédure, avant le end sub tu mets :
cells(1,1) = "première fois"
dans ta seconde procédure avant le end sub tu mets :
cells(1,1) = ""
ainsi quand tu déclenches pour la première fois, ta première procédure mettras une valeur dans la cellule.
Si il y a une valeur, tu appelles ta seconde procédure;
Si iln'yen a pas, il alnceras ta première procédure.
Salut,
Merci Melanie pour toutes les infos.
Une petite derniere, comment faire pour creer un boite de dialogue qui me dis: selectionner les taches, ensuite ma macro s'arrete, elle attend que je selectionne les taches( que je sélectionne en gros des cellules) pour passer à l'etape suivante.
Parceque moi j'ai utilisé ca:
MsgBox "Veuillez saisir les taches désirés", vbOKOnly + vbInformation, " "
Mon probleme c des que je mets OK, il passe a 'étape d'apres avant d'attendre que je selectionne es taches dont j'ai besoin. et c normale.
Mais comment faire alors?
Merci d'avance pour votre reponse.
Merci Melanie pour toutes les infos.
Une petite derniere, comment faire pour creer un boite de dialogue qui me dis: selectionner les taches, ensuite ma macro s'arrete, elle attend que je selectionne les taches( que je sélectionne en gros des cellules) pour passer à l'etape suivante.
Parceque moi j'ai utilisé ca:
MsgBox "Veuillez saisir les taches désirés", vbOKOnly + vbInformation, " "
Mon probleme c des que je mets OK, il passe a 'étape d'apres avant d'attendre que je selectionne es taches dont j'ai besoin. et c normale.
Mais comment faire alors?
Merci d'avance pour votre reponse.
Bonjour,
Tu ne peux pas!
une macro une fois lancée doit aller jusqu'à la fin.
Il n'est pas possible de la mettre sur pause pour sélectionner des cellules puis de la faire continuer.
Tu ne peux pas!
une macro une fois lancée doit aller jusqu'à la fin.
Il n'est pas possible de la mettre sur pause pour sélectionner des cellules puis de la faire continuer.
Comment faire pour determiner le numero de ligne de la derniere cellule de ma selection.
J'ai fais un truc du genre:
Selection.End(xlDown).Row
mais il me donne le numero de ligne de la derniere cellule non vide de la colonne ou j'ai selectionné.
t'aurais une idée?
J'ai fais un truc du genre:
Selection.End(xlDown).Row
mais il me donne le numero de ligne de la derniere cellule non vide de la colonne ou j'ai selectionné.
t'aurais une idée?
re,
je n'ai pas d'excel ici pour l'instant.
Essaie pour voir ce code :
if cells(1,1).select = true then 'si la cellule 1ère ligne, 2e colonne est sélectionnée
fais ce qu'il doit faire
end if
Si c'est le cas, utilises ce code.
je n'ai pas d'excel ici pour l'instant.
Essaie pour voir ce code :
if cells(1,1).select = true then 'si la cellule 1ère ligne, 2e colonne est sélectionnée
fais ce qu'il doit faire
end if
Si c'est le cas, utilises ce code.
Bonjour,
Au fait j'ai pas compris ton code.
J e vais essayer d'être plus clair.
je fais une selection de cellules de la colonne B sur Excel.
par exemple (B1:B20) ET (B35: B72), je veux quil me sorte que le numero de la derniere ligne est 72.
Schant que ma selection je la fais avec ctrl+ les ellules que je slectionnes avec la souris.
Au fait j'ai pas compris ton code.
J e vais essayer d'être plus clair.
je fais une selection de cellules de la colonne B sur Excel.
par exemple (B1:B20) ET (B35: B72), je veux quil me sorte que le numero de la derniere ligne est 72.
Schant que ma selection je la fais avec ctrl+ les ellules que je slectionnes avec la souris.
la soultion :
tu selectionnes les cellules.
Tu crées une macro à apporter les modifs à cette lage de cellule.
par vba, tu peux pas faire ce que tu demandes ou alors je ne suis pas assez calée.
tu selectionnes les cellules.
Tu crées une macro à apporter les modifs à cette lage de cellule.
par vba, tu peux pas faire ce que tu demandes ou alors je ne suis pas assez calée.
bonjour à tous les deux
devrait aller, c'est plus simple que ma réponse à l'autre topic , mais moins performant (each c) au lieu de .count et s'applique a une selection de plages disjointes, ce que ne faisiat pas l'autre proposition
bonne suite
Dim r As Long, c For Each c In Selection r = c.Row Next c MsgBox (r)
devrait aller, c'est plus simple que ma réponse à l'autre topic , mais moins performant (each c) au lieu de .count et s'applique a une selection de plages disjointes, ce que ne faisiat pas l'autre proposition
bonne suite
re
une modif au cas ou les plages sont selectionnées au hasard (pas forcement avec des numéros de lignes croissants)
bonne suite
une modif au cas ou les plages sont selectionnées au hasard (pas forcement avec des numéros de lignes croissants)
Dim r As Long, c
r = 0
For Each c In Selection
If c.Row > r Then
r = c.Row
End If
Next c
MsgBox (r)
bonne suite