Copier coller des cellules suites à une recherche
Bonjour,
Je bricole souvent en VBA mais ici je coince. J'ai 2 feuilles dans un même classeur. Sur la première feuille j'ai des numéros de châssis et sur la seconde feuille j'ai des numéros de châssis avec des codes et des sommes. Je voudrais recopier en couleur verte ces codes et ces sommes sur la feuille 1 dans la ligne correspondante au numéro de châssis à partir de la colonne P. Cela me permettra ensuite de comparer les valeurs demandées déjà présentes sur la feuille "Cont-paiement" avec les valeurs reçues écrites en vert.
Voir fichier en annexe.
Voici le début de mon code :
Sub Recap_primes()
Application.ScreenUpdating = False
Sheets("Cont-paiement").Select
Range("T2").Select
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
NumChassis = Range("T" & i).Value
If NumChassis <> "" Then
a = Range("T" & i).Address
b = Range(a).Column
c = Range(a).Row
Sheets("donnéesPrime").Select
Set PlageDeChassis = ActiveSheet.Columns(2)
Set chassis = PlageDeChassis.Cells.Find(What:=NumChassis, LookAt:=xlWhole)
If chassis Is Nothing Then
Sheets("Cont-paiement").Select
i = i
Else
x = chassis.Address
y = Range(x).Column
z = Range(x).Row
Cells(z, y).Select
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 2)).Select
Selection.Copy
Sheets("Cont-paiement").Select
b = Range(a).Column
c = Range(a).Row
Cells(c, b).Select
Range(ActiveCell.Offset(0, 14), ActiveCell.Offset(0, 14)).Select
ActiveSheet.Paste
End If
End If
Next i
Cells.Select
Range("O1").Activate
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End sub
Merci d'avance pour votre aide.
Didier
Bonjour Didier et bienvenue!
J'ignore si tu cherches encore une solution et si tu repasseras par ici, mis ce que tu voudrais faire (si j'ai bien compris!?) ... tu peux le faire avec une simple RECHERCHEV, me semble-t-il, non?
Bonjour Milité.
C'est sympa de t'intéresser à ma question.
Le problème est que le fichier de la feuille 2 est mis à jour chaque semaine et que des valeurs supplémentaires peuvent venir s'ajouter à des données transférer la semaine précédente. C'est la raison pour laquelle je penche plutôt pour une macro qui ajoutera les données à la suite sur la ligne correspondante au numéro de châssis.
Je bloque sur la ligne de commande qui permet de repérer la première cellule vide dans la ligne correspondante au châssis. Je maitrise la commande pour trouver la première cellule vide dans une colonne mais pas dans une ligne.
Merci d'avance pour ton aide.
Bonne journée.
Didier
Didier58 a écrit :C'est sympa de t'intéresser à ma question.
Je trouvais aussi
Ceci étant, je ne vois pas en quoi le fait que la feuille source soit mise à jour régulièrement est un obstacle à l'utilisation de la fonction RECHERCHEV: tu peux sélectionner des colonnes entières pour l'argument Table_Matrice, sans que le temps de calcul soit impacté de manière significative; tu peux aussi convertir la plage source en Tableau. De cette manière, la taille du tableau s'adaptera automatiquement!
Maintenant, il est possible que je n'aie pas compris: il ne me semble pas que j'obtienne les mêmes résultats que toi en feuille 1 ??
[Edit:] je viens de relire ton premier post ... les divergences de résultats s'expliquent mieux
Par contre, il y a des différences de formats et d'arrondis, d'une feuille à l'autre!?