OVH Cloud OVH Cloud

Effectuer une boucle

4 réponses
Avatar
Doug
Bonjour,

Je ne sais pas trop comment utiliser une boucle. J'ai un tableau excel
avec pas mal de colonnes, je souhaite exporter des informations de la
colonne A dans une autre feuille et effectuer pas mal de manip entre
les deux feuilles, et ensuite recommencer avec la colonne B, C, etc

Merci
Doug

4 réponses

Avatar
X
Bonsoir,

Peut être d'abord dire tu si tu sais faire une boucle, avant de
l'appliquer au vbA ???


"Doug" a écrit dans le message de news:

| Bonjour,
|
| Je ne sais pas trop comment utiliser une boucle. J'ai un tableau excel
| avec pas mal de colonnes, je souhaite exporter des informations de la
| colonne A dans une autre feuille et effectuer pas mal de manip entre
| les deux feuilles, et ensuite recommencer avec la colonne B, C, etc
|
| Merci
| Doug
|
Avatar
Doug
Avatar
Hervé
Salut Doug,
Teste si ça te conviens, il te faudra sans doute adapter à tes besions mais
c'est déjà une piste :

Sub MaProc()
Dim Plage As Range
Dim I As Long, J As Long

'défini la plage (ici, de A1 à la dernière
'cellules non vide de la feuille active)
Set Plage = PlageUtilisee(ActiveSheet)
'boucle par colonne puis par ligne
For I = 1 To Plage.Columns.Count 'colonne
For J = 1 To Plage.Rows.Count 'ligne
'Ici le traitement que tu veux faire
'si il est nécessaire à chaque cellule
'sinon, à adapter...
Debug.Print Plage(J, I)
Next J
Next I

Set Plage = Nothing
End Sub

Function PlageUtilisee(Fe As Worksheet) As Range
With Fe
Set PlageUtilisee = .Range(.Cells( _
.Cells.Find("*", .[IV65536], , , 1, 1).Row, _
.Cells.Find("*", .[IV65536], , , 2, 1).Column), _
.Cells( _
.Cells.Find("*", .[A1], , , 1, 2).Row, _
.Cells.Find("*", .[A1], , , 2, 2).Column))
End With
Set Fe = Nothing
End Function

Hervé.

"Doug" a écrit dans le message de news:

Bonjour,

Je ne sais pas trop comment utiliser une boucle. J'ai un tableau excel
avec pas mal de colonnes, je souhaite exporter des informations de la
colonne A dans une autre feuille et effectuer pas mal de manip entre
les deux feuilles, et ensuite recommencer avec la colonne B, C, etc

Merci
Doug



Avatar
X
Ah, une boucle alors, le vbA faut avoir avec les spécialistes:
Pour faire une boucle:

dim i as long ' variable
dim donnee(10) as long

for i = 1 to 10
donnee(i) = i
next i

Soit

FOR variable de la boucle(i) = début TO fin
variable de la boucle va aller de 1 à 10
donc si on a un tableau avec 10 entrées (tableau(i)) permettra de lires
et ou d'écrire dans chaque entrée, dans cet exemple...
NEXT variable de la boucle


On peut indiquer un bas à la boucle, par exemple depuis 00h, n'afficher que
les heures paires, soit:

for i = 0 to 24 step 2
MsgBox i ' affiche 0,2,4,6,8,10,12,14,16,18,20,22,24
next i

STEP (pas), on indique à la boucle le pas (par défaut, absence = 1), peut
être aussi négatif...

On boucle peut aussi être faite à l'envers:

for i = 10 to 1 step -1 ' le step est cette fois obligatoire si on recule
i = 10,9, ....1
next i

On peut aussi mettre plusieurs boucles les unes dans les autres:

for i = 1 to 10
for j = 1 to 20
'...
next j
next i

On peut schématiser une boucle ainsi:
dim variable
dim tabelau(10)
variable = 0
bis:
variable = variable + 1
MsgBox tabelau(i) = i
if variable < 11 goto bis
' si > 10 on arrive ici, etc...
---------------------------

Tu peux tester tout ça afin d'en comprendre préalablement le mécanisme...






"Doug" a écrit dans le message de news:

| non
|