Transformer en boucle

  • Initiateur de la discussion Initiateur de la discussion Yeahou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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+
 
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
 
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é
 
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....
 
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

😱)
 
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
 
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😀4


A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
718
Réponses
4
Affichages
586
Réponses
4
Affichages
681
Retour