Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2439 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA Excel - macro création de feuille

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA Excel - macro création de feuille

n°1397297
Viper7
Posté le 29-06-2006 à 16:22:37  profilanswer
 

J'ai un peu évolué dans mon apprentissage, je vais traiter problème par problème.
 
J'ai un classeur de base de donnée de voitures, composé d'une feuille récapitulant toutes les voitures et d'une feuille par voiture avec les détails.
Pour gérer les voitures, j'ai un userform qui a pour fonction d'ajouter, modifier et supprimer les voitures une a une. Ca fonctionne tres bien.
 
Après avoir rempli le formulaire pour ajouter une voiture, on peut cliquer sur un bouton (ayant pour nom bnNouvelleFeuilleVoiture) qui ajoute une nouvelle feuille ayant pour nom celui de la voiture c'est à dire la valeur de ce qu'il y a dans une textbox du formulaire (ici la textbox s'appelle txNomVoiture)
 
Voici le code du bouton :
 

Code :
  1. Private Sub bnNouvelleFeuilleVoiture_Click()
  2. Sheets.Add after:=Sheets(Worksheets.Count)
  3. Sheets(Worksheets.Count).Name = txNomVoiture.Value
  4. End Sub


 
C'est génial ca fonctionne mais si l'utilisateur clique une seconde fois, il y aura un message d'erreur VBA car il est impossible de créér deux fois la meme feuille (logique)
 
Question 1 /// Je cherche donc à faire un message du style "la page existe déjà" mais je n'arrive pas à le faire
 
J'ai aussi un bouton pour Supprimer la feuille :
 

Code :
  1. Private Sub bnSupprimerFeuilleVoiture_Click()
  2. Sheets(txNomVoiture.Value).Select
  3. ActiveWindow.SelectedSheets.Delete
  4. Sheets("Récap" ).Select
  5. End Sub


 
Mais si l'utilisateur clique une seconde fois alors que la feuille n'existe plus, ca plante VBA.
 
Question 2 /// Comment faire pour qu'en cliquant, ca teste s'il y a deja la feuille et si oui : ca la supprime; si non : message : la feuille a déja été supprimée?

mood
Publicité
Posté le 29-06-2006 à 16:22:37  profilanswer
 

n°1397300
Paul Hood
Posté le 29-06-2006 à 16:30:34  profilanswer
 

Ca doit passer
 
question 1 :
 
CreerFeuille = true
For Each ff In Worksheets
        if ff.Name = <nom de ta feuille> then CreerFeuille=false
Next
If creerFeuille then  
  Sheets.Add after:=Sheets(Worksheets.Count)Sheets
  (Worksheets.Count).Name = txNomVoiture.Value
end if
 
Question 2
 
SupprimerFeuille = False
For Each ff In Worksheets
        if ff.Name = <nom de ta feuille> then SupprimerFeuille=True
Next
If SupprimerFeuille then  
  Sheets(txNomVoiture.Value).Select
  ActiveWindow.Selected
  Sheets.DeleteSheets("Récap" ).Select
end if

n°1397301
jpcheck
Pioupiou
Posté le 29-06-2006 à 16:31:09  profilanswer
 

pour les deux questions, tu intercalles une boucle test sur l'existance ou non d'une feuille portant l nom en question =)

n°1397305
Paul Hood
Posté le 29-06-2006 à 16:33:47  profilanswer
 

Oups...le message...j'ai oublié..il faut ajouter
 
Question 1
Ajouter un else (du if creerfeuille)
else
  msgbox("Feuille " & txNomVoiture.Value & " dèjà créée" )
 
Question 2
Ajouter un else (du if Supprimerfeuille)
else
  msgbox("Feuille " & txNomVoiture.Value & " dèjà supprimée" )

n°1397551
Viper7
Posté le 29-06-2006 à 23:24:18  profilanswer
 

Génial ca marche très bien merci beaucoup !

n°1583234
fdal
Posté le 06-07-2007 à 15:22:11  profilanswer
 

Bonjour
 
j'aurais besoin d'aide sur un problème un peu semblable, mais rien n'est encore programmé.
Dans un dossier XLS, à partir d'une feuille Menu que l'on remplit soi-même (3 colonnes : un numéro, un nom et une description), je souhaite pouvoir générer autant de feuilles qu'il y a de numéros et que les feuilles en question soient toutes selon un modèle précis et qu'elles aient comme nom le numéro.
Comme je pars de zéro mon problème est un peu plus complexe que le précédent.
D'avance merci pour vos conseils.

n°1583253
jpcheck
Pioupiou
Posté le 06-07-2007 à 15:38:37  profilanswer
 

Ici on évite de partir de from scratch... donc faut filer un peu de code quand meme stp :o

n°1583357
fdal
Posté le 06-07-2007 à 17:07:47  profilanswer
 

Ben comme je suis débutant j'ai commencé avec les lignes de codes de Viper7 remasterisées par Paul Hood mais il y a des bugs que je ne sais pas débugger et je préférerais ne mettre qu'un seul bouton à la fin de la page avec une boucle for i from première ligne to dernière ligne (mais je ne sais pas comment on lui dit de trouver la dernière ligne)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA Excel - macro création de feuille

 

Sujets relatifs
[Excel] Comment obtenir la dernière valeur ?Conversion d'un Excel en PDF
[VBA] Problème avec les formats de dateUtilitaire d'analyse VBA
Afficher du VBA dans une page HTML[WORD] Publipostage à partir d'Excel
Besoin d'un peu d'aide sur VBA dans wordVBA/Excel : Taille de la police et d'une zone de texte
[Access]Question sur création de table 
Plus de sujets relatifs à : VBA Excel - macro création de feuille


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR