VBA Excel creer plusieurs feuilles

Résolu
9 -  
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>

20 réponses

  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    (Ne pas oublier le ) Bonjour,

    A priori ceci :

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

    A+

    0
  2. 9
     
    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
  3. melanie1324 Messages postés 1561 Statut Membre 156
     
    pour appeler une autre macro :

    call + nom macro :

    call SelectionnerCellules avant ton end sub
    0
  4. 9
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. melanie1324 Messages postés 1561 Statut Membre 156
     
    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
  7. 9
     
    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
  8. melanie1324 Messages postés 1561 Statut Membre 156
     
    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
  9. 9
     
    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
  10. melanie1324 Messages postés 1561 Statut Membre 156
     
    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
  11. 9
     
    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
  12. melanie1324 Messages postés 1561 Statut Membre 156
     
    Bonjour,

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

    je selectionne en maintenant la touche ctrl tout en selectionnant mes cellules
    0
  14. melanie1324 Messages postés 1561 Statut Membre 156
     
    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
  15. 9
     
    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
  16. melanie1324 Messages postés 1561 Statut Membre 156
     
    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
  17. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  18. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  19. 9
     
    Bonjour,

    Un grand merci a vous tous pour vos réponses.
    0
  20. mimin
     
    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
  21. melanie1324 Messages postés 1561 Statut Membre 156
     
    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