Recherche de cellule puis décalage d'une lign
Dodhuu
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis actuellement bloqué sur cette macro VBA faite un peu de bricolage :
...................................................................................................
Sub egalité()
Dim colonne As Integer
Dim c As Range, plage As Range
Set plage = ([C6:CB6])
For Each c In plage
If c.Value <> "" Then
colonne = c.Column
Cells(colonne & 3).Select
ActiveCell.Formula = "=R[2]C"
Else
Cells(colonne & 3).Select
ActiveCell.Formula = "=R[3]C"
End If
Next c
End Sub
....................................................................................................
Alors pour moi elle est censée lui dire de chercher si les cellules de la ligne 6 sont vides.
Si la cellule en ligne 6 est vide, alors la cellule (de la même colonne) ligne 3 est censée être égale à la cellule (de la même colonne) ligne 5.
Si elle n'est pas vide alors la cellule ligne 3 = la cellule ligne 6.
Exemple :
AVANT
A........................B.......................C
1.................l.....................l.............
2.................l.....................l.............
3.................l.....................l.............
4.................l.....................l.............
5.......12......l.....................l......9.......
6.................l..........15.......l.............
APRES
A.............................B......................C
1.................l.........................l.............
2.................l.........................l.............
3.......12......l.........15............l.......9......
4.................l.........................l.............
5.......12......l.........................l......9.......
6.................l..........15...........l.............
Alors il n'y a pas de message d'erreur mais il me fait n'importe quoi :
Il me remplie la ligne 1 avec la ligne 4 une fois toutes les 20 colonnes jusqu'à la colonne PG (pourquoi ? je ne sais pas )
exemple : En C1 = C4 puis en AQ1 = AQ4 etc ...
(Je sais que c'est possible sans macro, mais j'ai besoin d'une macro :) )
Thanks for help
Je suis actuellement bloqué sur cette macro VBA faite un peu de bricolage :
...................................................................................................
Sub egalité()
Dim colonne As Integer
Dim c As Range, plage As Range
Set plage = ([C6:CB6])
For Each c In plage
If c.Value <> "" Then
colonne = c.Column
Cells(colonne & 3).Select
ActiveCell.Formula = "=R[2]C"
Else
Cells(colonne & 3).Select
ActiveCell.Formula = "=R[3]C"
End If
Next c
End Sub
....................................................................................................
Alors pour moi elle est censée lui dire de chercher si les cellules de la ligne 6 sont vides.
Si la cellule en ligne 6 est vide, alors la cellule (de la même colonne) ligne 3 est censée être égale à la cellule (de la même colonne) ligne 5.
Si elle n'est pas vide alors la cellule ligne 3 = la cellule ligne 6.
Exemple :
AVANT
A........................B.......................C
1.................l.....................l.............
2.................l.....................l.............
3.................l.....................l.............
4.................l.....................l.............
5.......12......l.....................l......9.......
6.................l..........15.......l.............
APRES
A.............................B......................C
1.................l.........................l.............
2.................l.........................l.............
3.......12......l.........15............l.......9......
4.................l.........................l.............
5.......12......l.........................l......9.......
6.................l..........15...........l.............
Alors il n'y a pas de message d'erreur mais il me fait n'importe quoi :
Il me remplie la ligne 1 avec la ligne 4 une fois toutes les 20 colonnes jusqu'à la colonne PG (pourquoi ? je ne sais pas )
exemple : En C1 = C4 puis en AQ1 = AQ4 etc ...
(Je sais que c'est possible sans macro, mais j'ai besoin d'une macro :) )
Thanks for help
2 réponses
-
Bonjour,
l'anomalie provient de Cells(colonne & 3).Select si vous voulez selectionner la ligne 3 la syntaxe est la suivante:cells(3, colonne)
n'étant pas familier des coordonnées relatives, ci dessous ce que ça pourrait donner en supprimant le passage par des "select":
Dim colonne As Integer Dim c As Range, plage As Range Set plage = ([C6:CB6]) For Each c In plage colonne = c.Column If c.Value <> "" Then Cells(3, colonne).Value = Cells(5, colonne).Value Else Cells(3, colonne).Value = Cells(6, colonne).Value End If Next c
Bonne suite -
bonjour
il aurait été plus qu'utile de préciser le coup de la provenance des 2 lignes !!!
sans boule de cristal (bossé avant l'annonce tardive)
d'autre part dans ta macro, si la cellule ligne 6 est vide , pourquoi demande tu sa valeur en ligne 3?
en considérant que c'est linverse
Sub egalité() Dim colonne As Integer Dim c As Range Application.ScreenUpdating = False Range("C3:CB3") = ClearContents For Each c In Range("C6:CB6") colonne = c.Column If c.Value <> "" Then Cells(colonne, 3) = c.Value Else Cells(colonne, 3) = c.Offset(-1, 0) End If Next End Sub
-
-
Bonjour,
a moins d'^tre devenu dyslexique, il me semble bien que c'est ce que je t'ai proposé :o)
If c.Value <> "" Then
'si la cellule ligne n'est pas vide alors
Cells(colonne, 3) = c.Value
' la cellule ligne 3 est égale à la cellule ligne 6
Else
'sinon (la cellule est vide)
Cells(colonne, 3) = c.Offset(-1, 0)
'la cellule ligne 3 est égale à la cellule au dessus de la ligne 6 (ligne,5)
End If
-