Recherche

Excel VBA Boucle For

La boucle For est utilisée si le nombre d'itération est connu d'avance.  Le Syntaxe est présenté de la façon suivante:



For variable = [debut] To [Fin] [Pas de l'itération]
'Code à exécuter
Next variable

Exemple 1 de Code avec Boucle For/Next


Private Sub CmdSomme_Click()
Dim I As Integer 
'Faire la somme des deux cellules en sautant une cellule 
For I = 1 To 11 Step 2
Cells(I, 3).Value = Cells(I, 1).Value + Cells(I, 2).Value
MsgBox ("Itération numéro " & I)
Next I
End Sub

Exemple 2: Fonction Factoriel 

Une procédure qui appelle une fonction pour calculer le factoriel du nombre entré dans une InputBox et Retourne le résultat dans une MSGBOX:

Private Sub CmdFactoriel_Click()
Dim val As Integer
Dim resultat As Long
val = InputBox("Entrez votre valeur", "Factoriel", "1")
resultat = Factoriel(val)
MsgBox (val & " ! est egal à : " & resultat)

End Sub

Public Function Factoriel(MaValeur As Integer)
Dim I As Integer
Dim ValeurFactoriel As Long
'Initialiser le resultat à 1
ValeurFactoriel = 1
For I = 2 To MaValeur
ValeurFactoriel = ValeurFactoriel * I
Next I
Factoriel = ValeurFactoriel
End Function

Illustration du Résultat de l'Exécution

InputBox

InputBox



Exemple 3: Fonction Trier en VBA Excel

Trier les données existantes dans une colonne E2:E14 et les Placer dans un colonne F2:F14 et faire un message terminer après la fin des calculs. Le Code s'exécute à travers une ActiveX placer dans une feuille de votre choix

Code VBA:

Private Sub CmdTrier_Click()
'Trier les données dans A1:A14 et les placer dans dans F1:F14
Dim tempVal, I As Integer
Dim AutreIteration As Boolean

Range("A2:A14").Copy Range("F2:F14") 'copier les données vers la colonne spécifié
Range("F1") = "OutPut"

Do
AutreIteration = False
For I = 2 To 13
If Cells(I, "F").Value > Cells(I + 1, "F").Value Then
tempVal = Cells(I, "F").Value
Cells(I, "F").Value = Cells(I + 1, "F").Value
Cells(I + 1, "F").Value = tempVal
AutreIteration = True
End If
Next I
Loop While AutreIteration = False
MsgBox ("Terminer")

End Sub


Exemple Illustration:


VBA EXCEL TRIER for loop


Exemple 4: Programmer la Fonction Transposer en VBA Excel


Il s'agit de transposer un tableau dans de trois ligne et neuf colonne et vice versa sur click d'un bouton AactiveX:

Code VBA:

Private Sub Cmd_Transposer_Click()
'Transposer les 3 premieres colone et les 10 premiers lignes
'dans les 3 premiers ligne et les 10 premiers colonnes
'et vice Versa

Dim I, J, lig, col As Integer
lig = Range("A1").End(xlDown).Row
col = Range("A1").End(xlToRight).Column
If lig = 10 Then
Call NEUF_ligne_Tanspo
ElseIf lig = 3 Then
Call troi_ligne_transpo
End If
End Sub
***********************************************************
Private Sub NEUF_ligne_Tanspo()
Dim I, J, lig, col As Integer
Dim transposeTab(9, 2) As Integer
lig = Range("A1").End(xlDown).Row
col = Range("A1").End(xlToRight).Column

For I = 1 To col
For J = 1 To lig
transposeTab(J - 1, I - 1) = Cells(J, I).Value
Next J
Next I
Range("A1:K10").ClearContents

For I = 1 To col
For J = 1 To lig
Cells(I, J).Value = transposeTab(J - 1, I - 1)
Next J
Next I
End Sub
********************************************************
Private Sub troi_ligne_transpo()
Dim I, J, lig, col As Integer
Dim transposeTab(2, 9) As Integer
lig = Range("A1").End(xlDown).Row
col = Range("A1").End(xlToRight).Column

For I = 1 To col
For J = 1 To lig
transposeTab(J - 1, I - 1) = Cells(J, I).Value
Next J
Next I
Range("A1:K10").ClearContents

For I = 1 To col
For J = 1 To lig
Cells(I, J).Value = transposeTab(J - 1, I - 1)
Next J
Next I
End Sub

Exemple 5: ReDim Tableau pour Simplifier le code Transposer en VBA Excel

Nous pouvons utiliser des tableaux dynamiques pour simplifier la programmation de la fonction Transposer précédente:

Code VBA:

Private Sub CmdTraspose_Click()
Dim I, J, lig, col As Integer
Dim transposeTab() As Integer
lig = Range("A1").End(xlDown).Row
col = Range("A1").End(xlToRight).Column
ReDim transposeTab(lig - 1, col - 1)

For I = 1 To col
For J = 1 To lig
transposeTab(J - 1, I - 1) = Cells(J, I).Value
Next J
Next I
Range("A1:K10").ClearContents

For I = 1 To col
For J = 1 To lig
Cells(I, J).Value = transposeTab(J - 1, I - 1)
Next J
Next I
End Sub
Auteur: N’hésitez pas à me signaler les erreurs qui peuvent glisser dans cet article afin de les corriger.

Aucun commentaire :

Enregistrer un commentaire