Transformer en boucle

Y

Yeahou

Guest
Bonjour Silver Groover, Le forum

une simple boucle, pas besoin de passer par des variables

for Compteur=0 to 21
If not(Range("D1").offset(Compteur,0) = "") Then Range(Cells(lig + compteur, 1), Cells(lig, 1)) = DateValue(Range("D1").offset(Compteur,0) )
Next compteur

Cordialement, A+
 
S

Silver Groover

Guest
Bonjour et Bonne année.

je suis débutant et ne fait que du copier coller de toutes vos astuces dans ce forum.
Comment transformer le code suivant en une boucle (j'ai 22 ligne...) ?

d1 = Range("A5").Value
d2 = Range("A6").Value
d3 = Range("A7").Value
d4 = Range("A8").Value
....
If d1 <> "" Then
Range(Cells(lig, 1), Cells(lig, 1)) = DateValue(d1)
End If
If d2 <> "" Then
Range(Cells(lig + 1, 1), Cells(lig + 1, 1)) = DateValue(d2)
End If
If d3 <> "" Then
Range(Cells(lig + 2, 1), Cells(lig + 2, 1)) = DateValue(d3)
End If
If d4 <> "" Then
Range(Cells(lig + 3, 1), Cells(lig + 3, 1)) = DateValue(d4)
End If

Merci d'avance, et bonne journée
 
H

Hervé

Guest
Bonjour

Pas sur d"avoir tout compris.

Si tu veux renvoyer les cellules de la plage a5:a27 vers une autre plage à condition quelles ne soient pas vide :

Public Sub vev()
Dim c As Range
Dim lig As Byte
lig = 50
For Each c In Range("a5:a27")
If c.Value <> "" Then
Range(Cells(lig, 1), Cells(lig, 1)).value=DateValue(c.Value)
lig = lig + 1
End If
Next c
End Sub

Dans ce code tes cellules seront renvoyées à partir de A50 (lig=50).

Ca doit pas être cà ?

attention, pas testé

Salut
Hervé
 
S

Silver Groover

Guest
Merci à tout les 2,

En fait je copie une colonne de date (mais toutes les lignes n'en contiennent pas) d'un fichier vers un autre.
Je passais par copier une zone, mais pas possible de faire datevalue, et du coup le format passait de 17/01/05 à 01/17/05....
 
S

Silver Groover

Guest
Merci Yeahou

- pour la boucle, j'ai testé : que du blanc. Chez moi d1 est une variable pas la cellule D1. Je sais pas si ca peut venir de là.

- pour la 2ème soluce, vais la tester demain matin au boulot.

Chouette forum, chouette gars

:eek:)
 
Y

Yeahou

Guest
pour la boucle, j'ai repris ton code en oubliant de rajouter compteur au second lig, cela devrait mieux fonctionner mais je n'ai pas testé

for Compteur=0 to 21
If not(Range("D1").offset(Compteur,0) = "") Then Range(Cells(lig + compteur, 1), Cells(lig + compteur, 1)) = DateValue(Range("D1").offset(Compteur,0) )
Next compteur
 
Y

Yeahou

Guest
Bonjour

bon, mets un exemple sinon on va tourner en rond

pour Range().offset(,), cela permet de cibler une cellule relative. C'est pratique pour les boucles ou la maintenance.

exemple
Range("A1").offset(1,0) correspond à la cellule A2
Range("A1").offset(0,1) correspond à la cellule B1
Range("A1").offset(1,1) correspond à la cellule B2
et ainsi de suite
on peut même l'utiliser pour des plages
Range("A1").offset(1,0).Range("A1:B2") correspond au cellules A2:B3
ou plus tordu
Range("A1").offset(1,1).Range("B2:C3") correspond au cellules C3:D4


A+
 
S

Silver Groover

Guest
Re-salut

voilà j'aurais du commencer par là, désolé Yeahou.

j'ai simplifié (normalement 2 fichiers, à la place 2 feuillets)

L'action "copie" copie bien la zone mais le format de la date change...

merci

A+
 

Pièces jointes

  • exemple.zip
    12.8 KB · Affichages: 22
  • exemple.zip
    12.8 KB · Affichages: 23
  • exemple.zip
    12.8 KB · Affichages: 22
C

ChTi'160

Guest
Salut "Silver Groover"
bonjour "Yeahou" et le "FORUM"
une autre Version à adapter sûrement
A+++
Jean Marie
 

Pièces jointes

  • exemple_V2.zip
    8.9 KB · Affichages: 23
  • exemple_V2.zip
    8.9 KB · Affichages: 21
  • exemple_V2.zip
    8.9 KB · Affichages: 20

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 583
Membres
109 084
dernier inscrit
mizab