OVH Cloud OVH Cloud

Boucle

5 réponses
Avatar
Nath
Bonjour,

Je suis nouvelle en Excel et j'aimerais pouvoir faire une boucle sur les
cellules d'une colonne. Dans ca cas-ci, j'ai un champ date au format suivant
20070117 dans la colonne K qui débute à la ligne 4 jusqu'à...(jamais
pareil). Je change le format de la date dans la colone suivante (L4) en
utilisant la méthode suivante :
=DATE(GAUCHE(K4;4);STXT(K4;5;2);DROITE(K4;2)). Tout cela fonctionne bien,
mais j'aimerais automatiser le tout, c'est-à-dire qu'il y ait une boucle qui
change le format de ma date de la ligne de départ K4 jusqu'à ce qu'il n'y
ait plus de données dans la colonne en question (des fois cela va jusqu'à
200 et d'autrefois jusqu'à 2000).

Je sais que pour quelqu'un d'habitué c'est un jeu d'enfant, mais si vous
pourriez m'aider se serait vraiment gentil.

Merci !

Meg.

5 réponses

Avatar
isabelle
bonjour Meg,

For Each c In Range("K4:K" & Range("K65536").End(xlUp).Row)
année = Left(c, 4)
mois = Mid(c, 5, 2)
jrs = Right(c, 2)
Range(c.Address) = CDate(année & "-" & mois & "-" & jrs)
Next

isabelle

Bonjour,

Je suis nouvelle en Excel et j'aimerais pouvoir faire une boucle sur les
cellules d'une colonne. Dans ca cas-ci, j'ai un champ date au format suivant
20070117 dans la colonne K qui débute à la ligne 4 jusqu'à...(jamais
pareil). Je change le format de la date dans la colone suivante (L4) en
utilisant la méthode suivante :
ÚTE(GAUCHE(K4;4);STXT(K4;5;2);DROITE(K4;2)). Tout cela fonctionne bien,
mais j'aimerais automatiser le tout, c'est-à-dire qu'il y ait une boucle qui
change le format de ma date de la ligne de départ K4 jusqu'à ce qu'il n'y
ait plus de données dans la colonne en question (des fois cela va jusqu'à
200 et d'autrefois jusqu'à 2000).

Je sais que pour quelqu'un d'habitué c'est un jeu d'enfant, mais si vous
pourriez m'aider se serait vraiment gentil.

Merci !

Meg.




Avatar
Garette
Bonjour,

Il est possible d'utiliser également ceci :

Sub Test()
Set mazone = Range("K4:K" & Range("K65536").End(xlUp).Row)
mazone.TextToColumns DataType:=xlDelimited, FieldInfo:=Array(1, xlYMDFormat)
End Sub
Avatar
Nath
Merci beaucoup,

Ça fonctionne bien.

J'aurais une autre petite question à vous les expert(es). Il faudrait que je
puisse changer la date en fonction d'un nombre de jours X. Par exemple +90
jours ou -90 jours.

J'ai essayé avec une boucle du genre :

For Each c In ActiveSheet.Range("K4:K65536")
If (c.Value) > "0" Then c.Value = ActiveCell.Value - 90
Next

Ça fonctionne seulement pour le première cellule.

Quelqu'un a une idée pour m'aider ?

Merci !

Meg.


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

Bonjour,

Il est possible d'utiliser également ceci :

Sub Test()
Set mazone = Range("K4:K" & Range("K65536").End(xlUp).Row)
mazone.TextToColumns DataType:=xlDelimited, FieldInfo:=Array(1,
xlYMDFormat)
End Sub




Avatar
isabelle
bonjour Meg,

essaie comme ça,

For Each c In Range("K4:K" & Range("K65536").End(xlUp).Row)
If (c.Value) > 0 Then Range(c.Address) = c.Value - 90
Next

ou bien si tu veut mettre le résultat de la soustraction sur la colonne "L"

For Each c In Range("K4:K" & Range("K65536").End(xlUp).Row)
If (c.Value) > 0 Then Range(c.Address).Offset(0, 1) = c.Value - 90
Next

isabelle

Merci beaucoup,

Ça fonctionne bien.

J'aurais une autre petite question à vous les expert(es). Il faudrait que je
puisse changer la date en fonction d'un nombre de jours X. Par exemple +90
jours ou -90 jours.

J'ai essayé avec une boucle du genre :

For Each c In ActiveSheet.Range("K4:K65536")
If (c.Value) > "0" Then c.Value = ActiveCell.Value - 90
Next

Ça fonctionne seulement pour le première cellule.

Quelqu'un a une idée pour m'aider ?

Merci !

Meg.


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


Bonjour,

Il est possible d'utiliser également ceci :

Sub Test()
Set mazone = Range("K4:K" & Range("K65536").End(xlUp).Row)
mazone.TextToColumns DataType:=xlDelimited, FieldInfo:=Array(1,
xlYMDFormat)
End Sub









Avatar
Nath
Un GROS MERCI Isabelle !

Super génial !

Meg.


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

bonjour Meg,

essaie comme ça,

For Each c In Range("K4:K" & Range("K65536").End(xlUp).Row)
If (c.Value) > 0 Then Range(c.Address) = c.Value - 90
Next

ou bien si tu veut mettre le résultat de la soustraction sur la colonne
"L"

For Each c In Range("K4:K" & Range("K65536").End(xlUp).Row)
If (c.Value) > 0 Then Range(c.Address).Offset(0, 1) = c.Value - 90
Next

isabelle

Merci beaucoup,

Ça fonctionne bien.

J'aurais une autre petite question à vous les expert(es). Il faudrait que
je puisse changer la date en fonction d'un nombre de jours X. Par exemple
+90 jours ou -90 jours.

J'ai essayé avec une boucle du genre :

For Each c In ActiveSheet.Range("K4:K65536")
If (c.Value) > "0" Then c.Value = ActiveCell.Value - 90
Next

Ça fonctionne seulement pour le première cellule.

Quelqu'un a une idée pour m'aider ?

Merci !

Meg.


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


Bonjour,

Il est possible d'utiliser également ceci :

Sub Test()
Set mazone = Range("K4:K" & Range("K65536").End(xlUp).Row)
mazone.TextToColumns DataType:=xlDelimited, FieldInfo:=Array(1,
xlYMDFormat)
End Sub