VBA Excel creer plusieurs feuilles

Résolu/Fermé
9 - 11 févr. 2011 à 10:18
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 - 15 févr. 2011 à 14:55
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>
A voir également:

20 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
11 févr. 2011 à 10:40
(Ne pas oublier le ) Bonjour,

A priori ceci :

Application.DisplayAlerts = False
Worksheets(".....").Delete
Application.DisplayAlerts = True

A+

0
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
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
11 févr. 2011 à 14:49
pour appeler une autre macro :

call + nom macro :

call SelectionnerCellules avant ton end sub
0
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
0

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

Posez votre question
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
11 févr. 2011 à 15:16
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)
0
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?
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
11 févr. 2011 à 16:58
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.
0
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.
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
14 févr. 2011 à 10:03
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.
0
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?
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
14 févr. 2011 à 14:21
Bonjour,

pour te répondre, j'ai besoin de savoir omment tu fais tasélection?
0
Re,

je selectionne en maintenant la touche ctrl tout en selectionnant mes cellules
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
14 févr. 2011 à 14:28
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.
0
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.
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
14 févr. 2011 à 14:57
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.
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 14/02/2011 à 21:07
bonjour à tous les deux

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
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
14 févr. 2011 à 21:11
re

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
0
Bonjour,

Un grand merci a vous tous pour vos réponses.
0
Bonjour,

je veux creer une liste deroulante en userform avec dessus mes noms de feuilles.
comme ca des que je choisis un nom , il me selectionne automatiquement la feuille que je ve .

Qqun peut il m'aider svp , je sias pas quoi mettre dans le code
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
15 févr. 2011 à 14:55
Bonjour,

For I = 1 To Worksheets.Count
Me.Combobox1.AddItem sheets(i).name 'me = nom de ta liste déroulante
Next


dans le code de ta comobox :
a = combobox.value
sheets(a).select
0