Application bulletin de note

Fermé
passounene Messages postés 3 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 20 juin 2013 - 19 juin 2013 à 19:34
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 - 20 juin 2013 à 16:18
Bonjour

J'ai fait une application sous excel pour faire les bulletin de note. Jusqu'ici pas de problème ça fonctionne. J'arrive à éditer les bulletins de notes. Ce que je voudrais c'est qu'une fois édité ce bulletin je puisse le sauvegarder dans une nouvelle feuille. J'y parviens avec ce code :
Private Sub CommandButton1_Click()
Application.EnableEvents = False
With Worksheets("BULLETIN")
.Range("A1:H20").Copy Worksheets(ActiveSheet.Index + 1).Range("A1")
End With
Application.EnableEvents = True
End Sub

Dans cet exemple le bulletin de note est copié sur la feuille suivante mais il sera forcément remplacé par le prochain bulletin lors de la prochaine édition et ce n'est pas ce que je veux.

Je voudrais :

- Créer une variable I1 par exemple qui correspond au nom de l'élève et que cette variable nomme le prochain onglet. Mais avant il faut vérifier si la feuille est vide ou non.

Si feuille vide alors copie Bulletin sur prochaine feuille
Si feuille non vide copie Bulletin sur feuille n+1

Un coup de main ? merci
A voir également:

1 réponse

redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
Modifié par redaiwa le 20/06/2013 à 12:06
Salam passounene.

Colle le code suivant dans l'évènement Click de ton bouton d'enregistrement :

Private Sub BoutonEnregistrer_Click()
  Call EnregistrerBulletin(Range("B3"))
End Sub

NB : J'ai supposé que la cellule B3 contient le nom de l'étudiant.

Puis colle le code suivant dans un module:

Public Sub EnregistrerBulletin(Nom)
  'vérifier si le bulletin "Nom" existe
  i = 1
  Do
    If Worksheets(i).Name = Nom Then
      ind = Worksheets(i).Index
      Exit Do
    End If
    i = i + 1
  Loop Until i > Sheets.Count
  If i > Sheets.Count Then
    'si le bulletin "Nom" n'existe pas alors le créer
    Sheets.Add After:=Sheets(Sheets.Count)
    Worksheets(Sheets.Count).Name = Nom
    ind = Worksheets(i).Index
  End If
  'Copier les données depuis le bulletin édité vers le bulletin "Nom"
  Sheets("BULLETIN").Range("A1:H20").Copy Worksheets(ind).Range("A1")
  Application.CutCopyMode = False
End Sub

C'est bien ce que tu voulais ?
0
passounene Messages postés 3 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 20 juin 2013
20 juin 2013 à 13:37
oui presque mais je voudrai que "Nom" soit une variable ratachée à la cellule "I1", histoire que le nom de la feuille soit le nom de l'enfant quand celui change dans le bulletin.
En tous les cas merci
0
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
20 juin 2013 à 14:04
Ben tu n'as qu'a remplacer "B3" par "I1" dans le premier code.
0
passounene Messages postés 3 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 20 juin 2013
20 juin 2013 à 15:33
ok excuse j'avais pas lu le début du code, ça marche nickel.
C'est possible d'avoir un code qui trie les onglets ensuite par ordre alphabétique ? désolé si j'en demande trop
0
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
Modifié par redaiwa le 20/06/2013 à 16:00
0
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
20 juin 2013 à 16:18
0