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

exercice pour comprendre les boucles

3 réponses
Avatar
Dominique
bonjour le forum

je m entraine a comprendre le vb.
je me suis fais cet exercice pour comprendre

de A7 à dernière ligne j ai de "1 à 10"
de b7 à dernière ligne j ai des lettres

je voudrais si dans les cellules A la valeur est superieure à 5 copier
la lettre correspondante dans la cellule c

j ai fait ceci met ca ne marche pas et il y a pas de bug

Sub test2()
Dim derlig As Integer

With Sheets("feuil2")
derlig = .Range("A7").End(xlUp).Row
For i = 7 To derlig
If Cells(i, 1) > 5 Then
.Range("b" & i).Copy .Range("c" & i)

End If

Next i
End With

End Sub

Pouvez vous m expliquez ce qui ne va pas? et ce qu il faut que j ameliore
merci

3 réponses

Avatar
FxM
Bonjour Dominique,

d'une part
> de A7 à dernière ligne j ai de "1 à 10"
d'autre part
> derlig = .Range("A7").End(xlUp).Row
> For i = 7 To derlig

pour déterminer derlig, tu pars de A7 [.range("A7")] en remontant
[.End(xlup)]. Je pense qu'il faudrait :
- soit que tu montes à partir du bas de feuille
> derlig = .Range("A" & .rows.count).End(xlUp).Row
- soit que tu descendes si tu es sur de ne pas avoir de cellules vides
> derlig = .Range("A7").End(xlDown).Row

@+
FxM



Dominique a écrit :
bonjour le forum

je m entraine a comprendre le vb.
je me suis fais cet exercice pour comprendre

de A7 à dernière ligne j ai de "1 à 10"
de b7 à dernière ligne j ai des lettres

je voudrais si dans les cellules A la valeur est superieure à 5 copier
la lettre correspondante dans la cellule c

j ai fait ceci met ca ne marche pas et il y a pas de bug

Sub test2()
Dim derlig As Integer

With Sheets("feuil2")
derlig = .Range("A7").End(xlUp).Row
For i = 7 To derlig
If Cells(i, 1) > 5 Then
.Range("b" & i).Copy .Range("c" & i)

End If

Next i
End With

End Sub

Pouvez vous m expliquez ce qui ne va pas? et ce qu il faut que j ameliore
merci


Avatar
Dominique
merci beaucoup ca marche
Avatar
Hervé
Bonsoir Dominique,

Pour l'apprentissage de VBA, une autre façon de faire (il y en a une
multitude) :

Sub test2()

Dim Plage As Range
Dim Cel As Range

'les crochets [] sont équivalents
'à la fonction "Evaluate"
'défini la plage de travail
'à partir de A7
With Worksheets("feuil2")
Set Plage = .Range(.[A7], .[A65536].End(xlUp))
End With

'parcour les cellules de la plage (A7 à Ax)
'et copie les lettres correspondantes
'dans la colonne C
For Each Cel In Plage
If Cel > 5 Then
Cel.Offset(0, 2) = Cel.Offset(0, 1)
End If
Next Cel

'libère la mémoire
Set Cel = Nothing
Set Plage = Nothing

End Sub

Hervé.

"Dominique" a écrit dans le message de
news:un9Uj%
bonjour le forum

je m entraine a comprendre le vb.
je me suis fais cet exercice pour comprendre

de A7 à dernière ligne j ai de "1 à 10"
de b7 à dernière ligne j ai des lettres

je voudrais si dans les cellules A la valeur est superieure à 5 copier la
lettre correspondante dans la cellule c

j ai fait ceci met ca ne marche pas et il y a pas de bug

Sub test2()
Dim derlig As Integer

With Sheets("feuil2")
derlig = .Range("A7").End(xlUp).Row
For i = 7 To derlig
If Cells(i, 1) > 5 Then
.Range("b" & i).Copy .Range("c" & i)

End If

Next i
End With

End Sub

Pouvez vous m expliquez ce qui ne va pas? et ce qu il faut que j ameliore
merci