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
A voir également:
- Recherche de cellule puis décalage d'une lign
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Aller à la ligne dans une cellule excel - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Partage de photos en ligne - Guide
- Je recherche une chanson - Guide
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":
Bonne suite
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
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
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
Thanks mais ca ne marche pas, cette fois rien ne se passe :(
Est ce parce que les lignes 5 et 6 viennent d'un tableau dynamique ?