Remplacer valeur en fonction d'une référence

Bonjour à tous,

J'ai un fichier avec 2 onglets (Dev et Bible).

Je souhaiterai remplacer des valeurs dans l'onglet Dev par des valeurs contenu dans l'onglet Bible en fonction d'une référence contenu dans les 2 onglets.

Petite difficulté : J'aimerai traiter un nombre de ligne variable (plage variable donc)

je joins un fichier pour exemple et remercie tous ceux qui prendront le temps de m'aider.

Je reste à disposition pour tous éclaircissements.

Cordialement,

17dev.zip (7.54 Ko)

Bonjour Ali le forum

bon alors si les colonnes A et B de dev correspondent à A et B de Bible on copie la valeur d de Bible en C de Dev c'est cela ????

Mais dans ce cas si B est dans bible on fait quoi? ou ?comment ?

On ne considère que la colonne A de dev et Bible???

Si oui pourquoi il n'y a pas de valeur dans toutes les cases de D feuille Bible????

des explications claires et on va faire

a+

Papou

Bonjour,

Voir fichier

=RECHERCHEV(A2;BIBLE!A:D;4;FAUX)
15dev.zip (5.14 Ko)

Merci de prendre le temps de me répondre! C'est sympa!

Des explications :

Le fichier Dev provient de mon sous traitant. Ce dernier associe une référence à certaines lignes remplie. Toujours ce même sous traitant utilise ses propres prix et pas les miens par souci de confidentialité.

Je cherche donc a modifier ses prix. Pour cela dans ma bible, j'utilise la même référence, la même désignation avec mes propres prix.

J'aimerai mettre au point une macro me permettant de remplacer ses prix à l'aide d'un bouton. Il faudrait qu'à chaque fois que je retrouve dans Dev la même référence que dans ma bible, on remplace le prix de Dev par celui de bible.

J’espère avoir été un peu plus claire...

@ Jean Eric : Merci d'avoir pris le temps. La solution que tu propose est la solution manuel à savoir recherchev + copier + coller + police couleur pour repérer les cellules modifier.

Bonsoir;

A tester..

Cdlt

24dev.xlsm (24.55 Ko)
Option Explicit
Option Private Module
Public Sub Traitement()
Dim Wss As Worksheet, Wsd As Worksheet
Dim derLigne As Long, i As Long
Dim c As Range
    Application.ScreenUpdating = False
    Set Wss = Worksheets("BIBLE")
    Set Wsd = Worksheets("DEV")
    derLigne = Wsd.Range("A" & Rows.Count).End(xlUp).Row
    With Wss.Range("A:A")
        For i = 2 To derLigne
            Set c = .Find(what:=Wsd.Cells(i, 1), _
                LookIn:=xlValues, _
                lookat:=xlWhole, _
                MatchCase:=True)
            If Not c Is Nothing Then Wsd.Cells(i, 3) = c.Offset(0, 3)
        Next
    End With
    Set Wss = Nothing: Set Wsd = Nothing: Set c = Nothing
End Sub

Bonjour à tous,

Merci à Jean Eric! C'est exactement ce que je recherche!

Reste plus qu'à l'intégrer dans mon fichier! Merci Encore!

Une dernière chose, je souhaiterai mettre en rouge les cellules modifier mais je ne vois pas comment (pour le moment, y a plein de chose que je découvre).

Après ce sera exactement ce que je faisais manuellement. On pourra alors dire que la Machine a remplacer l'Homme!

Merci d'avance!

Cordialement,

Bonsoir,

Code modifié:

Option Explicit
Option Private Module
Public Sub Traitement()
Dim Wss As Worksheet, Wsd As Worksheet
Dim derLigne As Long, i As Long
Dim c As Range
    Application.ScreenUpdating = False
    Set Wss = Worksheets("BIBLE")
    Set Wsd = Worksheets("DEV")
    derLigne = Wsd.Range("A" & Rows.Count).End(xlUp).Row
    With Wss.Range("A:A")
        For i = 2 To derLigne
            Set c = .Find(what:=Wsd.Cells(i, 1), _
                LookIn:=xlValues, _
                lookat:=xlWhole, _
                MatchCase:=True)
           If Not c Is Nothing Then
                With Wsd.Cells(i, 3)
                    .Value = c.Offset(0, 3)
                    .Font.Color = vbRed
                End With
            End If
        Next
    End With
    Set Wss = Nothing: Set Wsd = Nothing: Set c = Nothing
End Sub

Merci pour cette option, mais je ne comprends pas pourquoi la macro efface les cellules ou ils n'y a pas de référence? Tu pense pouvoir y remédier?


Dans l'idéal, il faudrait ne pas modifier les lignes ou il n'y pas de référence.

Re,

Je ne comprends pas la question.

La macro boucle sur les valeurs de la colonne A de la feuille DEV.

A te relire.

Cdlt

Re,

Mon probléme ne vient pas de la boucle. La macro supprime le montant des lignes ou il n'y a pas de référence.

Sur Dev Efface juste les références "b" par exemple mais conserve le reste (désignation, montant). Lance la macro. Elle met 0 comme montant de toutes les lignes qui n'ont pas de référence.

Dans l'utilisation que j'en fais, je souhaiterai que les ligne qui n'ont pas de valeur en a (de référence) mais qui ont un montant, ne soit pas modifier.

J'espére m'etre fait compris...

Re,

Je ne comprends toujours pas.

Un exemple, avec un fichier?

Cdlt

Tu as raison, un exemple est souvent plus facile pour ce faire comprendre.

Lance la macro et regarde le montant de la ligne 4. il s'efface...ce qui m'arrange pas...

Merci

7dev2.xlsm (22.61 Ko)

Bonjour,

Tente:

If Not c Is Nothing And Not IsEmpty(c) Then
Rechercher des sujets similaires à "remplacer valeur fonction reference"