Se connecter avec
S'enregistrer | Connectez-vous

aide avec une macro excel

Dernière réponse : dans Programmation

slt

j'aurait besoin d'aide avec une macro. pour insérer une nouvelle feuille et lui donner le nom du mois suivant la feuille en cours (par exemple de Janvier passer à février et ainsi de suite)ainsi que de copier un tableau de la premiére feuille dans la feuille que je viens de créer et dans effacer les données à chaque fois que la feuille est créer!!
le problème c'est que je ne sait pas comment faire pour donner le nom a ma feuille tout en lui collant des donner à effacer à chaque mois.
Je connais le code pour effacer mais a chaque fois ke le nom de la feuille change il me mets que ma feuille est inconnue ce qui lance le débogage.

est-ce que quelqu'un peut m'aider???

Autres pages sur : aide macro excel

Lassé par la pub ? Créez un compte

voila mon code :
  1. Sheets("Feuil1").Select
  2. Sheets.Add
  3. Sheets("Feuil1").Select
  4. Selection.Copy
  5. Sheets("Feuil4").Select
  6. ActiveSheet.Paste
  7. Range("A2:Y14").Select
  8. Application.CutCopyMode = False
  9. Selection.ClearContents


et ce que je voudrait c'est renommer ma feuille avec le nom du mois qui ce mets automatiquement mais quand j'essaye de modifier le nom c'est le reste du code qui ne fonctionne plus et comme je ne suis pas très douée c'est le code d'une macro enregistré automatiquement

désolée de le dire mais j'ai l'impression que c'est du chinois. :jap:  :??: 
j'avais deja utilisée l'aide pour chaque code mais je n'arive pas à les synthétiser car je n'arive pas a faire la difference entre ce qui est utile ou non.

lorsque j'ai essayer de sythétiser la partie pour renommer ca m'a donner ceci :

Sheets("Feuil1").Select
Sheets.Add.name = "month"

mais ca ne fonctionne pas


ma feuille ne s'apelle pas feuille 1 mais feuill 4 car je l'ajoute a partir de ma feuille 1 donc c'est sur ma feuille 1 ou 4 que je met les parenthèses.
et pour le reste lorsque j'essaye de coller les information de mon ancienne feuille dans la nouvelle le nom de ma feuille ne fonctionne plus puisque j'ai modifier le nom et meme si je met feuille 4 ca ne fonctionne pas.

benharkouab a dit :
ma feuille ne s'apelle pas feuille 1 mais feuill 4 car je l'ajoute a partir de ma feuille 1 donc c'est sur ma feuille 1 ou 4 que je met les parenthèses.
et pour le reste lorsque j'essaye de coller les information de mon ancienne feuille dans la nouvelle le nom de ma feuille ne fonctionne plus puisque j'ai modifier le nom et meme si je met feuille 4 ca ne fonctionne pas.


de toute fason comme tu l'as ecrit ton code te permet d'ajouter une autre cheet et pour le mois il faut ecrire
  1. Sheets.Add.name = Month(Date)

mais cela donne juste le numero du mois alors a toi de trouver le reste :) 

la fonction Format devrait te permettre de convertir ton mois en texte.

Ensuite oublie l'utilisation de Sheets("toto").add...

Si tu veux ajouter une feuille passe par Workbooks.add et fais en sorte d'ajouter la feuille à la fin (ou en premier) comme ca après il est simple de la renommer.

PS : Edit tes premiers message et met des balises code (sous entendu par Zeb, car sinon ca lui brouille la vue, il est myope comme une taupe ou un calamar...)

merci beaucoup j'ai reussi a créer ma feuille en lui donnant un autre nom
cependant j'ai un probleme lorsque je copie les donné de mon tableau sur la feuille que je viens de créer car il me copie mon tableau sur la premiere feuille

mon code est celui ci

  1. Workbooks.add
  2. Range("A1:Y15").Select
  3. Selection.Copy
  4. ActiveSheet.Paste
  5. Range("A2:Y14").Select
  6. Application.CutCopyMode = False
  7. Selection.ClearContents


est lorsque je relance la macro elle me copie les données selectionné sur ma feuille actuelle au lieu de les copier sur la feuille ke je vien de creer
Expert Programmation

Toujours l'éternel problème : ne pas mettre de Select, de Selection, de ActiveTruc. Et apprendre à se servir de Copy.

(Je vais faire un topic là-dessus)

  1. Dim ancienne_feuille as WorkSheet
  2. Dim nouvelle_feuille as WorkSheet
  3.  
  4. ' Feuille active.
  5. Set ancienne_feuille = ActiveSheet
  6. ' Création, à la fin d'une nouvelle feuille.
  7. Set nouvelle_feuille = Sheets.Add after:=Sheets(Sheets.Count)
  8. ' Donner un nom à la feuille
  9. nouvelle_feuille.Name = "donne lui le nom que tu veux"
  10. ' Copier directement sans passer par le presse-papier
  11. ancienne_feuille.Range("A1:Y15").Copy destination:=nouvelle_feuille.Range("A1:Y15")
  12. ' Nettoyer
  13. ancienne_feuille.Range("A1:Y15").ClearContents


Oui, je sais, j'ai utilisé ActiveSheet. Mais c'est dans le cahier des charges :o 
A ce propos, coraya, est-ce la feuille active ou la derière feuille du classeur qui t'intéresse ?

C'est tout à fait logique puisque tu ne précise pas qu'elle onglet tu veux remplir. Donc il faut que tu garde en mémoire la feuille que tu as créé.
Par contre ton code me parait absurde puisque tu ajoutes une feuille qui devient la feuille active, ensuite tu copies A1:Y15 dans A2:Y14 et tu supprime le contenu de A2:Y14...
Ton reprends tout en maitrisant les feuilles que tu modifies, evites l'utilisation de activeSheets, Select, le copy paste aussi...

Le code ci dessous devrait t'aider.
  1. Dim nv_feuille as worksheet
  2.  
  3. Set nv_feuille = Sheets.add()
  4. nv_feuille.name = "toto"
  5. nv_feuille.range("A1:Y15").copy Range("A2:Y14")
  6. nv_feuille.Range("A2:Y14").clearcontent


Grilled...
Expert Programmation

:lol:  GRILLED. Et en beauté.
Code rigoureusement identique !
(A quelques détails près. Relis ta ligne 3, freeman.
Euh, je crois que ligne 5, tu te gourres. la nouverlle feuille est vide, L'origine, c'est bien l'ancienne)
Lassé par la pub ? Créez un compte