VBA Rechercher la valeur d'une cellule puis de la colonne puis copier la valeurs

nico91410

XLDnaute Nouveau
Salut !

J’aimerais faire une macro qui recherche la valeur d’une cellule (par exemple une référence) puis qui recherche la colonne associé à cette référence (par exemple le prix) puis qui copie dans un autre fichier le prix dans les bonnes colonnes et lignes (qui ont bien sur les mêmes intitulés).

Le fichier joint est simplifié (je dois avoir un total de 3000 lignes).

Merci pour votre aide.
 

Pièces jointes

  • trouver prix.xlsx
    8.2 KB · Affichages: 184

nico91410

XLDnaute Nouveau
Re : VBA Rechercher la valeur d'une cellule puis de la colonne puis copier la valeurs

Car j'ai deux fichiers et plus de 3000 lignes pour le fichier permanent et 2 lignes pour le fichier hebdo.

Voici mon code, je n'ai pas d'erreur mais il ne fonctionne pas.

Sub test()

Dim nbréf As Integer
Dim nbmat As Integer
Dim Référence As String
Dim coupletrouvé As String
Dim couplerecherché As String
Dim StartAnalyse As Integer
Dim EndAnalyse As Integer

'Compter le nombre de références dans l'onglet Références

Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").select
l = 2

While Cells(l, 1) <> ""
l = l + 1
Wend
nbréf = l - 2

For i = 1 to nbréf

'Reporter les valeurs pour chaque couple SKU & Site

numlig = 5
StartAnalyse = 2
m = StartAnalyse
EndAnalyse = Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Matières").Range("A65536").End(xlUp).Row

If numlig - 5 < nbréf Then
While m < EndAnalyse + 1


couplerecherché = Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Cells(m, 1).Value & _
Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Cells(m, 7).Value

coupletrouvé = Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Cells(numlig, 3).Value & _
Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Cells(numlig, 4).Value

If coupletrouvé = couplerecherché Then
Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Cells(m, 3).Value = _
Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Cells(m, 41).Value

numlig = numlig + 1 'on passe a la recherche du couple suivant
m = StartAnalyse 'on repart du début de l'analyse

Else: m = m + 1 'on cherche le couple dans la ligne suivante de l'analyse
End If

Wend




End If



Next
End Sub
 

nico91410

XLDnaute Nouveau
Re : VBA Rechercher la valeur d'une cellule puis de la colonne puis copier la valeurs

Sub test2()

Dim couplerecherché As String, coupletrouvé As String

couplerecherché = Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Cells(58, 3).Value & _
Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Cells(58, 5).Value

coupletrouvé = Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Cells(2, 1).Value & _
Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Cells(2, 7).Value

If couplerecherché = coupletrouvé Then
Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Cells(58, 41).Value = _
Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Cells(2, 3).Value

Else
MsgBox "Couple non égal"

End If

End Sub

Cette fois le code marche, il reste juste à l'automatisé pour un nombre de réf.
 

nico91410

XLDnaute Nouveau
Re : VBA Rechercher la valeur d'une cellule puis de la colonne puis copier la valeurs

Oui c'est ça,
maintenant j'aimerais remplacer la ligne 3 et la ligne 58 par autant de ligne que dans le tableau, afin que la macro puisse comparer toutes les lignes de mes tableaux
 

ERIC S

XLDnaute Barbatruc
Re : VBA Rechercher la valeur d'une cellule puis de la colonne puis copier la valeurs

re

cela risque de ralentir, compte tenu du nombre d'enregistrements
tu n'as pas la possibilité de concaténer les deux cellules dans une colonne supplémentaire dans ton tableau référence ?
 

nico91410

XLDnaute Nouveau
Re : VBA Rechercher la valeur d'une cellule puis de la colonne puis copier la valeurs

Je ne pense pas que cela puisse ralentir car le fichier à partir duquel je recherche les données comporte deux lignes, je souhaite copier ces valeurs dans le tableau (qui compte 3000 lignes) à la ligne correspondante à la concaténation des références et du site.

Voilà ce que j'arrive à faire mais cela ne marche pas. Je n'ai pas d'erreur mais il ne copie aucune donnée

Sub test2()

Dim couplerecherché As String, coupletrouvé As String

num_li = 5
StartAnalyse = 2
m = StartAnalyse
EndAnalyse = Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Range("A65536").End(xlUp).Row

couplerecherché = Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Cells(num_li, 3).Value & _
Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Cells(num_li, 5).Value

coupletrouvé = Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Cells(m, 1).Value & _
Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Cells(m, 7).Value

If couplerecherché = coupletrouvé Then
Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Cells(num_li, 41).Value = _
Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Cells(m, 3).Value

num_li = num_li + 1 'on passe a la recherche du couple suivant
m = StartAnalyse 'on repart du début de l'analyse

Else
m = m + 1 'on cherche le couple dans la ligne suivante de l'analyse

End If

End Sub
 

ERIC S

XLDnaute Barbatruc
Re : VBA Rechercher la valeur d'une cellule puis de la colonne puis copier la valeurs

re

besoin de précision :

le fichier qui a 2 lignes c'est bien tableau de bord

Arrêt c'est la référence et c'est dans tableau de bord que tu veux écrire le résultat ?
 

nico91410

XLDnaute Nouveau
Re : VBA Rechercher la valeur d'une cellule puis de la colonne puis copier la valeurs

Mon fichier qui a deux lignes c'est le fichier "Arrêts - Calcul du Négo_v1.xlsm"

Mon fichier qui dispose beaucoup de lignes c'est mon tableau de bord

Les données seront prises du fichier "Arrêt..." pour être copiés dans le tableau de bord
 

ERIC S

XLDnaute Barbatruc
Re : VBA Rechercher la valeur d'une cellule puis de la colonne puis copier la valeurs

re

d'après ce que j ecomprends mais non testé

Code:
Dim couplerecherché As String, coupletrouvé As String
 
startanalyse = 2
endanalyse = Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Range("A65536").End(xlUp).Row
 
For i = 5 To 6 '2 lignes fichier arrêt
     couplerecherché = Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Cells(i, 1).Value & _
     Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Cells(i, 7).Value
     
    'recherche dans autre fichier
    trouve = 0
    For j = startanalyse To endanalyse
        couplerecherché = Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Cells(j, 3).Value & _
        Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Cells(j, 5).Value
         If couplerecherché = coupletrouvé Then
                Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Cells(j, 41).Value = _
                Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Cells(i, 3).Value
         End If
         If trouvé = 1 Then MsgBox "trouvé": Exit For ' sortie dès que l'on trouve
    Next
    If trouvé = 0 Then MsgBox ("non trouvé pour ligne " & i) ' pb si pas trouvé dans liste
Next

je boucle lignes 5 & 6 sur arrêts
pour chacune des lignes, je balaye tableau de bord avec j et j'écris dans tableau de bord si trouvé

j'ai ajouté 2 lignes msgbox qui te donneront peut-être une indication, à passer en commentaire ou supprimer quand cela marche
 

Discussions similaires

Statistiques des forums

Discussions
312 201
Messages
2 086 166
Membres
103 151
dernier inscrit
nassim