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

ERIC S

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

il faudrait que tu joignes un exemple des 2 fichiers (sans données confidentielles), avec 2 lignes pour le fichier arrêt et une dizaine pour l'autre
 

nico91410

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

Voici les fichiers, j'espère que j'ai laissé assez de données :s
 

Pièces jointes

  • Arrêts - Calcul du Négo_v1.xlsm
    33.6 KB · Affichages: 88
  • Tableau de bord arrêt de prod SCtest.xlsm
    28.7 KB · Affichages: 78

ERIC S

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

re

Code:
Sub test2()
Dim couplerecherché As String, coupletrouvé As String
 
StartAnalyse = 5
EndAnalyse = Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Range("a65536").End(xlUp).Row
 
For i = 2 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
        coupletrouvé = 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 LCase(couplerecherché) = LCase(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
                trouvé = 1
         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
End Sub

les pbs :
EndAnalyse = Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Range("a65536").End(xlUp).Row
tu avais mis range("b65536"), b est vide donc endanalyse était tout le temps 1

j'avais mis deux fois couplerecherché (après copier/coller oublié de mettre coupletrouvé)

tes sites sont écris différemment (majuscules), j'ai modifié en forçant une comparaison en minuscules avec
If LCase(couplerecherché) = LCase(coupletrouvé) Then
 

nico91410

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

Salut !

Désolé de ne répondre que maintenant, mais la semaine est un peu chargé :s.
Merci encore pour ton aide.

La macro ci-dessus ne fonctionne pas dans mon fichier, ensuite quand je test ta macro dans les fichiers que j'ai mis sur le forum, il indique bien qu'il a trouvé les résultats mais il remplit la case de la première ligne uniquement.

Je regarde ça dans les détails cet après midi.
 

ERIC S

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

Re

quand on confond trouve et trouvé

code modifié à tester

Code:
Sub test2()
 Dim couplerecherché As String, coupletrouvé As String
  
 StartAnalyse = 5
 EndAnalyse = Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Range("a65536").End(xlUp).Row
 StartRecherche = 2
 EndRecherche = Workbooks("Arrêts - Calcul du Négo_v1.xlsm").Sheets("Références").Range("a65536").End(xlUp).Row
  
 For i = StartRecherche To EndRecherche '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
         coupletrouvé = 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 LCase(couplerecherché) = LCase(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
                 trouve = 1
          End If
          If trouve = 1 Then MsgBox "trouvé": Exit For ' sortie dès que l'on trouve
     Next
     If trouve = 0 Then MsgBox ("non trouvé pour ligne " & i) ' pb si pas trouvé dans liste
 Next
 End Sub
 

nico91410

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

Avec cette macro, cela fonctionne :
Sub test2()
Dim couplerecherché As String, coupletrouvé As String

StartAnalyse = 5
EndAnalyse = Workbooks("Tableau de bord arrêt de prod SCtest.xlsm").Sheets("Tableau Suivi").Range("C65536").End(xlUp).Row

For i = 2 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
coupletrouvé = 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
trouvé = 1
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
End Sub
 

ERIC S

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

Re

comme je te le disais, il faut changer trouve= 0 en trouvé = 0, (ou changer les trouvé en trouve) sinon tu ne seras jamais sûr de la valeur de la variable
 

Discussions similaires

Statistiques des forums

Discussions
312 360
Messages
2 087 598
Membres
103 604
dernier inscrit
CAROETALEX59