Si ligne Pointée, reporter cellule sur lignes mêmes critères

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 !

cathodique

XLDnaute Barbatruc
Bonjour,

En colonne L, des lignes sont pointée par le mot "Bon". Je voudrai reporter la valeur de la cellule (colG) sur les lignes ayant des valeurs identiques que la ligne pointée, en col C et col D et valeur entière de col F.

ex: cells(3,12)="Bon"--->si cells(x,3)=cells(3,3) and cells(x,4)=cells(3,4) and Int(cells(x,5)=Int(cells(3,5)
alors Cells(x,7)=cells(3,7)

voici ce que j'ai fait mais ça ne fonctionne pas. j'ai réduit au maximum les données sur le fichier joint (nombres de lignes réelles (2800).
Code:
Sub pointer()
Dim DerLig As Integer, c As Range, N As String, bd As Sheets, val As String

With Sheets("bd")
For Each c In Range(.Cells(2, 12), .Cells(Rows.Count, 12).End(3))

If c.Value = "Bon" Then
N = c.Offset(, -9) & c.Offset(, -8) & CStr(Int(c.Offset(, -7)))
val = c.Offset(, -5)
If c.Offset(, -9) & c.Offset(, -8) & CStr(Int(c.Offset(, -7))) = N Then
c.Offset(, -5) = val
End If
End If
Next c
End With
End Sub
Je vous remercie pour votre précieuse aide.

Cordialement,
 

Pièces jointes

Re : Si ligne Pointée, reporter cellule sur lignes mêmes critères

Bonjour à tous

cathodique
Déjà modifies tes déclarations de variable ainsi
Dim DerLig As Long, c As Range, N As String, bd As String, valc As String
(Bien qu'ici dans ton code tu n’utilises pas DerLig)
(ne pas oublier de modifier le reste du code en conséquence notamment pour valc)
 
Dernière édition:
Re : Si ligne Pointée, reporter cellule sur lignes mêmes critères

Re

cathodique
J'ai ouvert ta PJ et avec ce que j'ai compris pondu ceci
Code:
Sub a()
Dim c As Range
Sheets("bd").Activate
For Each c In Range(Cells(2, "L"), Cells(Rows.Count, "L").End(3))
    If c Like "Bon" Then
        If Cells(c.Row - 1, "B") = Cells(c.Row, "B") Then
            If Cells(c.Row - 1, "C") = Cells(c.Row, "C") Then
                If Int(Cells(c.Row - 1, "E")) = Int(Cells(c.Row, "E")) Then
                Cells(c.Row - 1, "G") = "A"
                End If
            End If
        End If
    End If
Next c
End Sub

Est-ce la le résultat escompté?
 
Dernière édition:
Re : Si ligne Pointée, reporter cellule sur lignes mêmes critères

Bonjour Staple,

Désolé pour la réponse tardive. Je te remercie pour ton aide. je viens de faire un test, ce n'est pas exactement le résultat escompté.

j'ai modifié les colonnes (C,D eu lieu de B,C)('**); le code reporte "A". ce n'est pas ça, il faut reporter la valeur de col G qui se trouve où il y a "Bon" en colonne L car il a aussi "B" (sur le fichier original, il y a d'autres valeurs aussi).
Code:
Sub a()
Dim c As Range
Sheets("bd").Activate
For Each c In Range(Cells(2, "L"), Cells(Rows.Count, "L").End(3))
    If c Like "Bon" Then
        If Cells(c.Row - 1, "C") = Cells(c.Row, "C") Then '**
            If Cells(c.Row - 1, "D") = Cells(c.Row, "D") Then '**
                If Int(Cells(c.Row - 1, "E")) = Int(Cells(c.Row, "E")) Then
                Cells(c.Row - 1, "G") = Cells(c.Row , "G")'***1
                End If
            End If
        End If
    End If
Next c
je ne suis pas très fort mais j'ai compris que tu vérifies une ligne et celle du dessus.

Il vaut mieux que je te donne 2 exemples concrets pour A et B (lignes:10,11,12,14 et 15)

* en ligne 15: col L="Bon" -->col G="B" -->col C="G2" et Col D="TF/L" et Int(col E)=232
on se met sur ligne col C="G2" et Col D="TF/L" et Int(col E)=232 et met en col C="G2" soit B (ici c'est ligne 14)

** en ligne 11: col L="Bon" -->col G="A" -->col C="G2" et Col D="A/O" et Int(col E)=0
on se met sur lignes col C="G2" et Col D="A/O" et Int(col E)=0 et met en col C="G2" soit A (ici c'est ligne 10 et 12)

Après modification de la ligne de code '**1, le code reporte bien les valeurs "A" et "B" mais ne traite pas les lignes 5 et 12.

Je ne sais pas si c'est plus clair, je tourne en rond.

Merci quand même pour ton intervention.

Cordialement,
 
Dernière édition:
Re : Si ligne Pointée, reporter cellule sur lignes mêmes critères

salut

avec tes conditions, essaie
Code:
Sub pointer()
  Dim c As Range
  For Each c In Range("L2", [L6500].End(xlUp))
    If c = "Bon" Then
      If c(1, -8) = c(0, -8) And c(1, -7) = c(0, -7) And Int(c(1, -6)) = Int(c(0, -6)) Then c(0, -4) = c(1, -4)
    End If
  Next
End Sub

Maintenant, il faudrait aussi savoir si on ne devrait pas remonter.
 
Re : Si ligne Pointée, reporter cellule sur lignes mêmes critères

Bonsoir Si,

je te remercie beaucoup, on obtient le même résultat qu'avec le code de Staple.

Le code met la valeur de la ligne n et en ligne n-1. Mais il s'avère, qu'il peut y avoir plusieurs lignes qui répondent aux mêmes critères dont certaines peuvent être au-dessus et en dessous de la ligne qui est pointée.

Exemple pour lignes 4,5,6 et 7 int(col E)=232 et lignes 10,11 et 12 Int(col E)=0 , bon est en ligne 11( ligne 10 traitée mais pas la 12).

Merci quand même, ton code est plus simple mais ne répond pas exactement au résultat escompté.

Bon dimanche.

Cordialement,
 
- 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

Discussions similaires

Réponses
11
Affichages
783
Retour