Trie les anniversaires en mois avec Excel VBA

Nous examinerons un programme dans Excel VBA qui trie les anniversaires en mois en premier et en jours en second (donc nous ignorons les années). Nous voulons l’anniversaire avec le numéro de mois le plus bas à la première position. S’il y a des anniversaires avec des numéros de mois égaux, nous voulons d’abord l’anniversaire avec le numéro de jour le plus bas. Es-tu prêt?

Remarque: les dates sont au format américain. Mois d’abord, jours ensuite. Ce type de format dépend des paramètres régionaux de Windows.

1. Premièrement, nous déclarons huit variables. Une variable Date que nous appelons tempDate, une variable String que nous appelons tempName. Les six autres variables sont des variables entières avec les noms monthToCheck, dayToCheck, monthNext, dayNext, i et j.

Dim tempDate As Date, tempName As String
Dim monthToCheck As Integer, dayToCheck As Integer, monthNext As Integer, dayNext As Integer, i As Integer, j As Integer

2. Nous commençons deux boucles For Next.

For i = 2 To 13
    For j = i + 1 To 13

Exemple: pour i = 2, j = 3, 4, …, 12 et 13 sont vérifiés.

3. Nous initialisons quatre variables entières. Nous utilisons la fonction Mois pour obtenir le mois d’une date et le

Fonction jour pour obtenir le jour d’une date.

monthToCheck = month(Cells(i, 2).Value)

dayToCheck = day(Cells(i, 2).Value)

monthNext = month(Cells(j, 2).Value)

dayNext = day(Cells(j, 2).Value)

4. Pour trier correctement les dates, nous comparons la première date (monthToCheck et dayToCheck) avec la date suivante (monthNext et dayNext). Si la prochaine date est «inférieure», nous échangeons les dates et les noms. Ajoutez l’instruction If Then suivante.

If (monthNext < monthToCheck) Or (monthNext = monthToCheck And dayNext < dayToCheck) Then
End If

Si la déclaration ci-dessus est vraie, nous échangeons les dates et les noms.

Par exemple: pour i = 2 et j = 3, la date de Bregje et Niels est vérifiée. MonthNext = 6, monthToCheck = 2. L’instruction ci-dessus n’est pas vraie car monthNext est supérieur à monthToCheck. Excel VBA incrémente j de 1 et répète les lignes de code pour i = 2 et j = 4. Vous pouvez facilement voir que Joost (j = 4) a un numéro de mois plus élevé que Bregje, nous allons donc au suivant. Nous obtenons le même résultat pour j = 5 et j = 6. Lorsque nous arrivons à j = 7, nous avons les variables suivantes: monthNext = 2 et dayNext = 9. MonthToCheck = 2 et dayToCheck = 12. Maintenant, l’énoncé ci-dessus est vrai puisque monthNext = monthToCheck et dayNext (9) est inférieur à dayToCheck (12).5. Nous échangeons les dates. Nous stockons temporairement une date dans tempDate, afin qu’Excel VBA puisse échanger les dates correctement. Ajoutez les lignes de code suivantes dans l’instruction If.

‘ échanger des dates

tempDate = Cells(i, 2).Value

Cells(i, 2).Value = Cells(j, 2).Value

Cells(j, 2).Value = tempDate

6. Nous faisons de même avec les noms. Ajoutez les lignes de code suivantes dans l’instruction If.

‘échanger des noms

tempName = Cells(i, 1).Value

Cells(i, 1).Value = Cells(j, 1).Value

Cells(j, 1).Value = tempName

7. Nous fermons la deuxième boucle For Next (en dehors de l’instruction If).

Next j

8. Fermez la première boucle For Next (en dehors de l’instruction If).

Next i

9. Testez votre programme.

Résultat:

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x