VBA Excel - macro création de feuille

VBA Excel - macro création de feuille - VB/VBA/VBS - Programmation

Marsh Posté le 29-06-2006 à 16:22:37    

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?

Reply

Marsh Posté le 29-06-2006 à 16:22:37   

Reply

Marsh Posté le 29-06-2006 à 16:30:34    

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

Reply

Marsh Posté le 29-06-2006 à 16:31:09    

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

Reply

Marsh Posté le 29-06-2006 à 16:33:47    

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" )

Reply

Marsh Posté le 29-06-2006 à 23:24:18    

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

Reply

Marsh Posté le 06-07-2007 à 15:22:11    

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.

Reply

Marsh Posté le 06-07-2007 à 15:38:37    

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

Reply

Marsh Posté le 06-07-2007 à 17:07:47    

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)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed