Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copie de données vers une autre feuille en face du bon code produit

  • Initiateur de la discussion Initiateur de la discussion davidp
  • Date de début Date de début

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 !

davidp

XLDnaute Occasionnel
Bonjour à tous ,

je m'excuse de vous déranger une nouvelle fois , mais là ,je suis bloqué.

Je réalise une extraction de CA en fonction d'un code produit ( cela peut aller de 5 lignes à 300 lignes), je cherche ensuite à coller les résultats de la colonne b et c en face du bon code produit (colonne A) sur une autre feuille appelée " collage final" .

Je ne sais pas si cela est réalisable , mais je vous remercie d'avance pour votre aide .

Bonne soirée à tous

DAVIDP
 

Pièces jointes

Re : Copie de données vers une autre feuille en face du bon code produit

Bonsoir,

Est-ce qu'une formule te conviendrait?

Par exemple en B2 et copiée vers le bas:
Code:
=SI(ESTNA(RECHERCHEV($A2;extraction!$A$2:$C$55;2;FAUX));0;RECHERCHEV($A2;extraction!$A$2:$C$55;2;FAUX))

et en C2:
Code:
=SI(ESTNA(RECHERCHEV($A2;extraction!$A$2:$C$55;3;FAUX));0;RECHERCHEV($A2;extraction!$A$2:$C$55;3;FAUX))

Bien à toi,

mth

Edit: sourire.. histoire de sortir mon vocabulaire 🙂 xoxo ça se dit? (si pas ça tu me diras Etienne pour m'éviter des gaffes 🙂 )
@ +
m
 
Dernière édition:
Re : Copie de données vers une autre feuille en face du bon code produit

Salut Davidp,
voici une autre proposition, par macro celle-là.

VB:
Option Explicit

Sub Test()
Dim Code_Produit As String
Dim DL As Long, i As Long
Dim c, Valeur1, Valeur2

Application.ScreenUpdating = False
Sheets("extraction").Select
DL = Cells(65536, 1).End(xlUp).Row

For i = 2 To DL
    Sheets("extraction").Select
    If Cells(i, 2).Value <> "" And Cells(i, 3).Value <> "" Then
        Code_Produit = Cells(i, 1).Value
        Valeur1 = Cells(i, 2).Value
        Valeur2 = Cells(i, 3).Value
        Sheets("collage final ").Select
        Set c = Range(Cells(1, 1), Cells(Cells(65536, 1).End(xlUp).Row, 1)).Find(Code_Produit, LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
            Cells(c.Row, 2).Value = Valeur1
            Cells(c.Row, 3).Value = Valeur2
        End If
        Code_Produit = ""
        Valeur1 = ""
        Valeur2 = ""
        
    End If
Next i

End Sub

Bonne soirée,

Étienne

Edit : Nous sommes définitivement sur la même page ce soir M 🙂 xxx
 
Dernière édition:
Re : Copie de données vers une autre feuille en face du bon code produit

Bonsoir etienne 2323

Je te remercie également pour ton aide , c'est bluffant...

je vais regarder le code de plus prés afin de comprendre , mais j'ai réalisé le test , cela fonctionne , et je crois comprendre que la macro analyse toutes lignes , c'est top

Bonne soirée et encore un grand merci

DAVIDP
 
Re : Copie de données vers une autre feuille en face du bon code produit

Rebonjour le forum ,

désolé de revenir vers vous , car je suis bloqué.

En effet , j'ai utilisé la macro d'étienne2323 , mais celle ci ne veux pas fonctionner sur le fichier en annexe ( j'ai volontairement masquer une feuille), j'ai le message suivant " l'indice n'appartient pas à la sélection" , alors là , je ne comprend pas.

Nb: Par contre , sur le fichier d'étienne , elle fonctionne!

Si quelqu'un peux m'expliquer afin de résoudre le problème ,

je vous remercie d'avance.

Bonne journée à tous
 

Pièces jointes

Re : Copie de données vers une autre feuille en face du bon code produit

Bonjour à tous 🙂

Tu as sur cette ligne:
Code:
 Sheets("collage final ").Select
un espace après final. Or dans ton fichier, l'onglet se nomme "collage final" sans espace à la fin contrairement à ton premier fichier.

Tout semble ok si tu corriges ce point.

Bonne soirée,

mth
 
Re : Copie de données vers une autre feuille en face du bon code produit

Bonjour,

Comme ceci elle devrait mieux fonctionner, feuille visible ou non

Mais attention aux noms de feuilles! il y avait un espace en fin de Sheets("Collage final ")

C'est une macro à mettre dans un module général et pas dans ThisWorkbook.

VB:
Sub Test()
    Dim Code_Produit As String
    Dim DL As Long, i As Long
    Dim c, Valeur1, Valeur2
    Dim shDest As Worksheet
    Set shDest = Sheets("collage final")
    Application.ScreenUpdating = False
    With Sheets("extraction")
        DL = .Cells(65536, 1).End(xlUp).Row
        For i = 2 To DL
            If .Cells(i, 2).Value <> "" And .Cells(i, 3).Value <> "" Then
                Code_Produit = .Cells(i, 1).Value
                Valeur1 = .Cells(i, 2).Value
                Valeur2 = .Cells(i, 3).Value
                Set c = shDest.Range(shDest.Cells(1, 1), shDest.Cells(shDest.Cells(65536, 1).End(xlUp).Row, 1)).Find(Code_Produit, LookIn:=xlValues, lookat:=xlWhole)
                If Not c Is Nothing Then
                    shDest.Cells(c.Row, 2).Value = Valeur1
                    shDest.Cells(c.Row, 3).Value = Valeur2
                End If
                Code_Produit = ""
                Valeur1 = ""
                Valeur2 = ""
            End If
        Next i
    End With
End Sub

A+
 
Re : Copie de données vers une autre feuille en face du bon code produit

Bonjour HASCO,

Un grand merci , effectivement tu as raison.

Cela faisait 2H que je cherchai...

Bonne journée et merci encore

DAVIDP
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…