Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

explication d'une macro

4 réponses
Avatar
cliffburton57
Bonjour,

Pouvez vous m'expliquez les differentes etapes de cette macro
En effet je cherche a la comprendre mais je ne trouve pas de "dictionnaire" .

--------------------------------
> Sub test()
>
> Dim Rg As Range, a As Integer
> Dim Arr As Variant, x as variant
> Dim Arr1 As Variant
>
> Arr = Array("H", "M", "N", "O", "P", "Q")
> Arr1 = Array(15, 2, 1, 0, 0, 2)
>
> If TypeName(Selection) = "Range" Then
> Set Rg = Selection
> Else
> Exit Sub
> End If
>
> Application.EnableEvents = False
> Application.ScreenUpdating = False
> For Each r In Rg.Rows
> For Each x In Arr
>
> Cells(r.Row, x) = Arr1(a)
> a = a + 1
> Next
> a = 0
> Next
> Set Rg = Nothing
> End Sub
> '--------------------------------
Merci d'avance

4 réponses

Avatar
Vincnet.
Bonjour,
ALors voilà :
Dim Rg As Range, a As Integer
Dim Arr As Variant, x as variant
Dim Arr1 As Variant

Arr = Array("H", "M", "N", "O", "P", "Q")
Arr1 = Array(15, 2, 1, 0, 0, 2)



sert à dimensionner les variables utilisées et à initialiser les 2 tableaux
Arr et Arr1

If TypeName(Selection) = "Range" Then
Set Rg = Selection
Else
Exit Sub
End If



teste le type de la sélection, si la sélection est une plage de cellules
(objet range, car cette sélection pourrait être par exemple un graphe, un
objet...), affecte à la variable Rg cet objet, sinon, sorte de la procédure.

Application.EnableEvents = False
Application.ScreenUpdating = False



désactive la gestion des événements par les macros évenementiels et
désactive le rafraîchissement de l'écran pendant le traitement de la macro
(pour gagner du temps de traitement en général)

For Each r In Rg.Rows
For Each x In Arr

Cells(r.Row, x) = Arr1(a)
a = a + 1
Next
a = 0
Next



Pour chaque ligne de la plage sélectionnée au moment du lancement de la
procédure (la plage Rg), remplit les colonnes H, M, N, O, P et Q (tableau
Arr) de ces lignes avec les valeurs 15, 2, 1, 0, 0 et 2 (tableau Arr1).

Set Rg = Nothing
End Sub



libère de la mémoire la plage Rg et sort de la procédure...

C'est suffisamment clair ? Sinon, reviens préciser les points bloquants !
--
A+

V.



Bonjour,

Pouvez vous m'expliquez les differentes etapes de cette macro
En effet je cherche a la comprendre mais je ne trouve pas de "dictionnaire" .

--------------------------------
Sub test()

Dim Rg As Range, a As Integer
Dim Arr As Variant, x as variant
Dim Arr1 As Variant

Arr = Array("H", "M", "N", "O", "P", "Q")
Arr1 = Array(15, 2, 1, 0, 0, 2)

If TypeName(Selection) = "Range" Then
Set Rg = Selection
Else
Exit Sub
End If

Application.EnableEvents = False
Application.ScreenUpdating = False
For Each r In Rg.Rows
For Each x In Arr

Cells(r.Row, x) = Arr1(a)
a = a + 1
Next
a = 0
Next
Set Rg = Nothing
End Sub
'--------------------------------
Merci d'avance




Avatar
cliffburton57
Premierment merci de m'avoir repondu aussi vite.

J'ai tout compris sauf les deux tableau Arr1 et Arr
Que signifie la commande Arr ?
Dimmensionné les variables??

Merci



Bonjour,
ALors voilà :
Dim Rg As Range, a As Integer
Dim Arr As Variant, x as variant
Dim Arr1 As Variant

Arr = Array("H", "M", "N", "O", "P", "Q")
Arr1 = Array(15, 2, 1, 0, 0, 2)



sert à dimensionner les variables utilisées et à initialiser les 2 tableaux
Arr et Arr1

If TypeName(Selection) = "Range" Then
Set Rg = Selection
Else
Exit Sub
End If



teste le type de la sélection, si la sélection est une plage de cellules
(objet range, car cette sélection pourrait être par exemple un graphe, un
objet...), affecte à la variable Rg cet objet, sinon, sorte de la procédure.

Application.EnableEvents = False
Application.ScreenUpdating = False



désactive la gestion des événements par les macros évenementiels et
désactive le rafraîchissement de l'écran pendant le traitement de la macro
(pour gagner du temps de traitement en général)

For Each r In Rg.Rows
For Each x In Arr

Cells(r.Row, x) = Arr1(a)
a = a + 1
Next
a = 0
Next



Pour chaque ligne de la plage sélectionnée au moment du lancement de la
procédure (la plage Rg), remplit les colonnes H, M, N, O, P et Q (tableau
Arr) de ces lignes avec les valeurs 15, 2, 1, 0, 0 et 2 (tableau Arr1).

Set Rg = Nothing
End Sub



libère de la mémoire la plage Rg et sort de la procédure...

C'est suffisamment clair ? Sinon, reviens préciser les points bloquants !
--
A+

V.



Bonjour,

Pouvez vous m'expliquez les differentes etapes de cette macro
En effet je cherche a la comprendre mais je ne trouve pas de "dictionnaire" .

--------------------------------
Sub test()

Dim Rg As Range, a As Integer
Dim Arr As Variant, x as variant
Dim Arr1 As Variant

Arr = Array("H", "M", "N", "O", "P", "Q")
Arr1 = Array(15, 2, 1, 0, 0, 2)

If TypeName(Selection) = "Range" Then
Set Rg = Selection
Else
Exit Sub
End If

Application.EnableEvents = False
Application.ScreenUpdating = False
For Each r In Rg.Rows
For Each x In Arr

Cells(r.Row, x) = Arr1(a)
a = a + 1
Next
a = 0
Next
Set Rg = Nothing
End Sub
'--------------------------------
Merci d'avance






Avatar
Vincnet.
Arr est le nom de la variable. Et c'est un tableau, déclaré comme Variant
(autrement dit comme tout et n'importe quoi jusqu'à ce que la variable soit
assignée à un objet/valeur).
Array(...) permet de déclarer un ensemble fini (ou tableau) d'éléments.
Arr = Array(1, 2) crée un tableau à une dimension avec comme premier élément
1 et comme deuxième élément 2. Mais on peut rajouter autant d'éléments que
l'on veut, éléments qui pourraient même être des d'autres tableaux.
Cela dit, qu'est-ce qui te pose problème exactement ?

--
A+

V.



Premierment merci de m'avoir repondu aussi vite.

J'ai tout compris sauf les deux tableau Arr1 et Arr
Que signifie la commande Arr ?
Dimmensionné les variables??

Merci



Bonjour,
ALors voilà :
Dim Rg As Range, a As Integer
Dim Arr As Variant, x as variant
Dim Arr1 As Variant

Arr = Array("H", "M", "N", "O", "P", "Q")
Arr1 = Array(15, 2, 1, 0, 0, 2)



sert à dimensionner les variables utilisées et à initialiser les 2 tableaux
Arr et Arr1

If TypeName(Selection) = "Range" Then
Set Rg = Selection
Else
Exit Sub
End If



teste le type de la sélection, si la sélection est une plage de cellules
(objet range, car cette sélection pourrait être par exemple un graphe, un
objet...), affecte à la variable Rg cet objet, sinon, sorte de la procédure.

Application.EnableEvents = False
Application.ScreenUpdating = False



désactive la gestion des événements par les macros évenementiels et
désactive le rafraîchissement de l'écran pendant le traitement de la macro
(pour gagner du temps de traitement en général)

For Each r In Rg.Rows
For Each x In Arr

Cells(r.Row, x) = Arr1(a)
a = a + 1
Next
a = 0
Next



Pour chaque ligne de la plage sélectionnée au moment du lancement de la
procédure (la plage Rg), remplit les colonnes H, M, N, O, P et Q (tableau
Arr) de ces lignes avec les valeurs 15, 2, 1, 0, 0 et 2 (tableau Arr1).

Set Rg = Nothing
End Sub



libère de la mémoire la plage Rg et sort de la procédure...

C'est suffisamment clair ? Sinon, reviens préciser les points bloquants !
--
A+

V.



Bonjour,

Pouvez vous m'expliquez les differentes etapes de cette macro
En effet je cherche a la comprendre mais je ne trouve pas de "dictionnaire" .

--------------------------------
Sub test()

Dim Rg As Range, a As Integer
Dim Arr As Variant, x as variant
Dim Arr1 As Variant

Arr = Array("H", "M", "N", "O", "P", "Q")
Arr1 = Array(15, 2, 1, 0, 0, 2)

If TypeName(Selection) = "Range" Then
Set Rg = Selection
Else
Exit Sub
End If

Application.EnableEvents = False
Application.ScreenUpdating = False
For Each r In Rg.Rows
For Each x In Arr

Cells(r.Row, x) = Arr1(a)
a = a + 1
Next
a = 0
Next
Set Rg = Nothing
End Sub
'--------------------------------
Merci d'avance








Avatar
cliffburton57
Merci Vincnet et bonnes fetes


Arr est le nom de la variable. Et c'est un tableau, déclaré comme Variant
(autrement dit comme tout et n'importe quoi jusqu'à ce que la variable soit
assignée à un objet/valeur).
Array(...) permet de déclarer un ensemble fini (ou tableau) d'éléments.
Arr = Array(1, 2) crée un tableau à une dimension avec comme premier élément
1 et comme deuxième élément 2. Mais on peut rajouter autant d'éléments que
l'on veut, éléments qui pourraient même être des d'autres tableaux.
Cela dit, qu'est-ce qui te pose problème exactement ?

--
A+

V.



Premierment merci de m'avoir repondu aussi vite.

J'ai tout compris sauf les deux tableau Arr1 et Arr
Que signifie la commande Arr ?
Dimmensionné les variables??

Merci



Bonjour,
ALors voilà :
Dim Rg As Range, a As Integer
Dim Arr As Variant, x as variant
Dim Arr1 As Variant

Arr = Array("H", "M", "N", "O", "P", "Q")
Arr1 = Array(15, 2, 1, 0, 0, 2)



sert à dimensionner les variables utilisées et à initialiser les 2 tableaux
Arr et Arr1

If TypeName(Selection) = "Range" Then
Set Rg = Selection
Else
Exit Sub
End If



teste le type de la sélection, si la sélection est une plage de cellules
(objet range, car cette sélection pourrait être par exemple un graphe, un
objet...), affecte à la variable Rg cet objet, sinon, sorte de la procédure.

Application.EnableEvents = False
Application.ScreenUpdating = False



désactive la gestion des événements par les macros évenementiels et
désactive le rafraîchissement de l'écran pendant le traitement de la macro
(pour gagner du temps de traitement en général)

For Each r In Rg.Rows
For Each x In Arr

Cells(r.Row, x) = Arr1(a)
a = a + 1
Next
a = 0
Next



Pour chaque ligne de la plage sélectionnée au moment du lancement de la
procédure (la plage Rg), remplit les colonnes H, M, N, O, P et Q (tableau
Arr) de ces lignes avec les valeurs 15, 2, 1, 0, 0 et 2 (tableau Arr1).

Set Rg = Nothing
End Sub



libère de la mémoire la plage Rg et sort de la procédure...

C'est suffisamment clair ? Sinon, reviens préciser les points bloquants !
--
A+

V.



Bonjour,

Pouvez vous m'expliquez les differentes etapes de cette macro
En effet je cherche a la comprendre mais je ne trouve pas de "dictionnaire" .

--------------------------------
Sub test()

Dim Rg As Range, a As Integer
Dim Arr As Variant, x as variant
Dim Arr1 As Variant

Arr = Array("H", "M", "N", "O", "P", "Q")
Arr1 = Array(15, 2, 1, 0, 0, 2)

If TypeName(Selection) = "Range" Then
Set Rg = Selection
Else
Exit Sub
End If

Application.EnableEvents = False
Application.ScreenUpdating = False
For Each r In Rg.Rows
For Each x In Arr

Cells(r.Row, x) = Arr1(a)
a = a + 1
Next
a = 0
Next
Set Rg = Nothing
End Sub
'--------------------------------
Merci d'avance