Parfois, vous pouvez avoir besoin d’Excel pour générer un numéro unique pour vos feuilles de calcul. Par exemple, vous pouvez utiliser Excel pour créer des formulaires tels que http://www.formville.com/C2_free-invoice-forms.html[invoiceletters, relevés ou feuilles de suivi, et vous avez besoin de numéros uniques pour chaque formulaire ( J’appellerai cela un ticket number). Ceci, bien sûr, implique qu’Excel doit se souvenir du numéro d’une session à l’autre.

Vous pouvez aborder ce problème de plusieurs manières. Si les numéros n’ont pas besoin d’être séquentiels, vous pouvez créer un numéro de ticket en fonction de l’heure actuelle, en secondes. La macro suivante peut être ajoutée à l’objet ThisWorksheet:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim lTicket As Long     lTicket = CLng(Time  24  60 * 60)

Sh.Range("A1") = lTicket End Sub

La macro est déclenchée chaque fois qu’une nouvelle feuille de calcul est ajoutée au classeur. Il prend l’heure actuelle, la convertit en un nombre entier de secondes, puis place cette valeur dans la cellule A1. La probabilité de duplication des numéros de billets dans une journée donnée est faible, mais cela peut se produire avec le temps. (Par exemple, si vous créez un ticket exactement à la même heure aujourd’hui que vous l’avez fait hier ou la semaine dernière.)

Pour contourner ce problème, vous pouvez créer un numéro de ticket de la manière suivante:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim sTemp As String     sTemp = Format(Date, "yymmdd") & Format(Time, "hhmmss")

Sh.Range("A1") = sTemp End Sub

Cette version du gestionnaire d’événements construit un numéro de ticket basé à la fois sur la date et l’heure. Sauf si vous créez des tickets très rapidement, cette approche devrait réduire la possibilité de doublons générés par la macro.

Si les nombres doivent être séquentiels dans le classeur actuel, vous pouvez définir un nom qui contient la valeur actuelle élevée de votre numéro de ticket, puis une macro qui place ce numéro dans une cellule sur une nouvelle feuille de calcul et incrémente la valeur de la valeur stockée nombre. Suivez ces étapes pour commencer:

  1. Choisissez Nom dans le menu Insertion, puis choisissez Définir. Excel affiche la boîte de dialogue Définir le nom. (Voir la figure 1.)

  2. Dans la zone Nom, entrez un nom tel que MaxNum.

  3. Dans la zone Se réfère à au bas de la boîte de dialogue, entrez un signe égal suivi de la valeur que vous souhaitez utiliser pour le numéro de ticket suivant.

  4. Cliquez sur OK. Le nouveau nom est stocké dans le classeur.

Maintenant, ajoutez la macro suivante à l’objet ThisWorksheet dans l’éditeur VBA:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim iMax As Integer     iMax = Mid(ThisWorkbook.Names("MaxNum"), 2)

Sh.Range("A1") = iMax     iMax = iMax + 1     ThisWorkbook.Names("MaxNum").RefersTo = "=" & iMax End Sub

Cette macro est exécutée chaque fois que vous insérez une nouvelle feuille de calcul dans le classeur. Il récupère la valeur que vous avez stockée dans MaxNum, place cette valeur dans la cellule A1 de la nouvelle feuille de calcul, puis incrémente ce qui est stocké dans MaxNum.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (3336) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Generating_Unique_Numbers_for_Worksheets [Génération de numéros uniques pour les feuilles de travail].