Rechercherv en VBA

Bonjour

je recherche la fonction ( recherchev en VBA)

je voudrais vous expliquer ce que je veux faire

j'utilise un fichier G9-automatique.xlsm que je sauvegarde mes données vers un autres fichier qui se nomme JOB.xlsx

quand je utilise mon fichier G9-automatique.xlsm et je remet mon numéro de JOB je voudrais quand j'appuis son mon bouton de macro ( restore) je vais chercher dans le fichier JOB.XLSX toutes les donner puis les remets sur mon premier Fichier G9-automatique.xlsm

voici la macro que je pensais utiliser

mais j'ai un probleme avec

 SEQ1 = Application.WorksheetFunction.VLookup(JOB, "B:AL", 10, False)

je pensais rechercchev ( job , dans mon fichier JOB.XLSX tableau de B:AL , colonne 10 )

copier cette valeur dans mon fichier G9-automatique.xlsm dans la celulle Range("L70") = SEQ1

Merci pour votre aide

Sub Restore()

Dim JOB As String, SEQ1 As String

With Sheets("lancement 1")
Sheets("lancement 1").Select
JOB = Range("AS6")
End With

Workbooks.Open Filename:= _
"K:\TD-Production\PUBLIC\FR\Outils\JOB\job.xlsx", Password:="Qmatch", WriteResPassword:="Qmatch"

SEQ1 = Application.WorksheetFunction.VLookup(JOB, "B:AL", 10, False)

With Sheets("lancement 1")
Sheets("lancement 1").Select
Range("L70") = SEQ1

End With
End Sub

Salut olivcoco,

essaie de changer cette Ligne

ancien: Dim JOB As String

nouveau: Dim JOB As Long

@+++

Bonjour

cela ne focntionne pas j'ai changer le string par long et j'ai eu un autre probleme

la ligne JOB = Range("AS6" c'est mis en jaune

j'ai donc essaye

Dim Job , SEQ1

et la j'ai eu

SEQ1 = Application.WorksheetFunction.VLookup(JOB, "B:AL", 10, False) c 'est mis en jaune

pour info

JOB j'ai WO222222

dans SEQ1 c'est des phrases textes

Bonjour le fil

@Olivcoco, il faut définir correctement la plage ou effectuer la recherche

A essayer

Sub Restore()
  Dim JOB As String, SEQ1 As String
  Dim Wbk As Workbook, Sht As Worksheet
  ' Récupérer le numéro de Job
  JOB = Sheets("lancement 1").Range("AS6")
  ' Ouvrir et définir le classeur
  Set Wbk = Workbooks.Open(Filename:= _
    "K:\TD-Production\PUBLIC\FR\Outils\JOB\job.xlsx", Password:="Qmatch", WriteResPassword:="Qmatch")
  ' Définir la feuille à traiter du classeur ouvert
  Set Sht = Wbk.Sheets(1)
  ' Recherche dans la feuille le job
  SEQ1 = Application.WorksheetFunction.VLookup(JOB, Sht.Range("B:AL"), 10, False)
  ' Inscrire la valeur
  Sheets("lancement 1").Range("L70").Value = SEQ1
  ' Referme le classeur
  Wbk.Close SaveChanges:=False
End Sub

Nota : merci de mettre le code entre balises avec le bouton </> SVP

A+

Bonjour

j'ai un message erreur

Sheets("lancement 1").Range("L70") = SEQ1 c'est mis en jaune

merci pour votre aide.

Re,

Essayer avec

Debug.Print SEQ1    ' Pour voir la valeur retournée
Sheets("lancement 1").Range("L70") .Value = SEQ1

A+

Bonjour à tous,

A tout hasard, l'erreur ne provient-elle pas du fait que la RechercheV ne trouve aucune correspondance ?
Si tel est le cas, en rajoutant un SIERREUR ?....à tester...

SEQ1 = IIf(IsError(Application.VLookup(JOB, Sht.Range("B:AL"), 10, False)),0,Application.VLookup(JOB, Sht.Range("B:AL"), 10, False))

Cordialement,

Bonjour

j'ai essaye les deux modifications

je n'ai plus de message erreur mais dans ma cellule L70 de la feuille Lancement 1 et de mon fichier G9-automatique il y a rien je n'arrive aps a récuperer mon texte

Re,

Quelle est la valeur de ?

 JOB = Sheets("lancement 1").Range("AS6")

Si dans votre classeur, vous faites manuellement une RECHERCHEV() avec les mêmes paramètre

Qu'est-ce que ça vous donne ?

A+

bonjour

Debug.Print SEQ1 ' Pour voir la valeur retournée

c'est pour quoi comment je peux voir si il a bien prit

peux ton avoir un message box

Salut tout le monde,

à mon avis, un fichier exemple facilitera la tâche

@+++

bonjour

j'ai rajouter msgbox ( SES1)

dans la box j'ai bien mon message maintenant il me reste a copier le message (SEQ1) dans mon premier fichier en L70

Sub Restore()
Dim JOB As String, SEQ1 As String
Dim Wbk As Workbook, Sht As Worksheet
' Récupérer le numéro de Job
JOB = Sheets("lancement 1").Range("AS6")
' Ouvrir et définir le classeur
Set Wbk = Workbooks.Open(Filename:= _
"K:\TD-Production\PUBLIC\FR\Outils\JOB\job.xlsx", Password:="Qmatch", WriteResPassword:="Qmatch")
' Définir la feuille à traiter du classeur ouvert
Set Sht = Wbk.Sheets(1)
' Recherche dans la feuille le job
SEQ1 = IIf(IsError(Application.VLookup(JOB, Sht.Range("B:AL"), 10, False)), 0, Application.VLookup(JOB, Sht.Range("B:AL"), 10, False))
' Inscrire la valeur
MsgBox (SEQ1)
Debug.Print SEQ1 ' Pour voir la valeur retournée
Sheets("lancement 1").Range("L70").Value = "coucou"
' Referme le classeur
Wbk.Close SaveChanges:=False
End Sub

Bonsoir olivcoco

Si vous avez trouvé la solution, merci de la mettre ici SVP ce qui aidera ceux qui comme vous cherchent

Par avance merci,

A+

Bonjour

voici la solution

Sub Restore()
Dim JOB As String, SEQ1 As String
Dim Wbk As Workbook, Sht As Worksheet
' Récupérer le numéro de Job
JOB = Sheets("lancement 1").Range("AS6")
' Ouvrir et définir le classeur
Set Wbk = Workbooks.Open(Filename:= _
"K:\TD-Production\PUBLIC\FR\Outils\JOB\job.xlsx", Password:="Qmatch", WriteResPassword:="Qmatch")
' Définir la feuille à traiter du classeur ouvert
Set Sht = Wbk.Sheets(1)
' Recherche dans la feuille le job
SEQ1 = IIf(IsError(Application.VLookup(JOB, Sht.Range("B:AL"), 10, False)), 0, Application.VLookup(JOB, Sht.Range("B:AL"), 10, False))
' Inscrire la valeur
MsgBox (SEQ1) ' pour verifier qui prend bien la valeur
Windows("G9 -automatique.xlsm").Activate ' je reactive la fenetre de mon fichier d'origine 
Sheets("lancement 1").Range("L70").Value = "L70"
' Referme le classeur
Wbk.Close SaveChanges:=False
End Sub

Merci à tous

Rechercher des sujets similaires à "rechercherv vba"