Programme qui n'affiche rien

salut

j'ai réaliser ce programme qui normalement doit effectuer une rechercher sur deux feuilles mais il se compile et il n'affiche aucun erreur et en meme temps il ne change rien dans les feuilles. s'il vous plait aidez moi à corriger ce programme et merci.

Sub VLookup()

    Dim sRes As String
    Dim F1, F2 As Worksheet
    Dim LastLig1 As Long
    Dim plage As Range
    Dim C As Range
    Dim i As Integer
    Dim rs As String
    Dim Resultat As Range

    Set F1 = Worksheets("fichier existant")
    Set F2 = Worksheets("fichier importé")
    Set plage = Sheets(2).Range("G1", Sheets(2).Range("G65536").End(xlUp))
    'LastLig1 = F2.Cells(Rows.Count, "A").End(xlUp).Row
    'For ligne = 2 To LastLig1
    i = 1
    For Each C In plage
    i = i + 1
    rs = F2.Range("G" + CStr(i)).Value
     F2.Range("Z" + CStr(i)).Value = (Application.VLookup("rs", F1.Range("G:G"), 2, False))
      Debug.Print rs
    If IsError(F2.Range("Z" + CStr(i)).Value) Then
        F2.Range("Z" + CStr(i)).Value = old
    Else
    F2.Range("Z" + CStr(i)).Value = Nouveau
    End If
    Next C

    'Debug.Print rs

End Sub

Bonjour Khawla, bonjour le forum,

Petit erreur (sans conséquence) dans la déclaration des variables. On peut déclarer plusieurs variables sur une même ligne mais il faut en spécifier le type de chacune. Sinon elle prend le type Variant par défaut, gourmand en mémoire

 Dim F1, F2 As Worksheet

Pas glop, pas glop !

 Dim F1 As WorkSheet, F2 As Worksheet

Glop, Glop !

J'aurais écrit le code plutôt comme ça :

Sub VLookup()
Dim sRes As String
Dim F1 As Worksheet
Dim F2 As Worksheet
Dim O As Worksheet
Dim LastLig1 As Long
Dim plage As Range
Dim C As Range
Dim i As Integer
Dim rs As String
Dim Resultat As Range

Set F1 = Worksheets("fichier existant")
Set F2 = Worksheets("fichier importé")
Set O = Worksheets(2)
Set plage = O.Range("G1", O.Range("G65536").End(xlUp))
plage.Select
'LastLig1 = F2.Cells(Rows.Count, "A").End(xlUp).Row
'For ligne = 2 To LastLig1
i = 1
For Each C In plage
    i = i + 1
    rs = F2.Cells(i, "G").Value
    F2.Cells(i, "Z").Value = Application.VLookup("rs", F1.Range("G:G"), 2, False)
    Debug.Print rs
    If IsError(F2.Cells(i, "Z").Value) Then
        F2.Cells(i, "Z").Value = old
    Else
        F2.Cells(i, "Z").Value = Nouveau
    End If
Next C
'Debug.Print rs
End Sub

Merci beaucoup pour votre réponse, mais j'ai modifié le programme et il n'affiche rien dans la colonne z de fichier exporté.

Bonjour,

les variables old et nouveau ne sont pas initialisées.

si tu veux mettre le texte "old " et "nouveau" plutôt que le contenu des variables old et nouveau adapte le code ainsi

Sub VLookup()
Dim sRes As String
Dim F1 As Worksheet
Dim F2 As Worksheet
Dim O As Worksheet
Dim LastLig1 As Long
Dim plage As Range
Dim C As Range
Dim i As Integer
Dim rs As String
Dim Resultat As Range

Set F1 = Worksheets("fichier existant")
Set F2 = Worksheets("fichier importé")
Set O = Worksheets(2)
Set plage = O.Range("G1", O.Range("G65536").End(xlUp))
plage.Select
'LastLig1 = F2.Cells(Rows.Count, "A").End(xlUp).Row
'For ligne = 2 To LastLig1
i = 1
For Each C In plage
    i = i + 1
    rs = F2.Cells(i, "G").Value
    F2.Cells(i, "Z").Value = Application.VLookup("rs", F1.Range("G:G"), 2, False)
    Debug.Print rs
    If IsError(F2.Cells(i, "Z").Value) Then
        F2.Cells(i, "Z").Value = "old"
    Else
        F2.Cells(i, "Z").Value = "Nouveau"
    End If
Next C
'Debug.Print rs
End Sub

merci vous avez raison mais le programme n'arrive pas à réaliser ce que je veux parce que toutes les valeurs de la colonne Z est remplie par old. je suis débutante en VBA et ça fait une semaine que je galère avec ce problème .

bonjour,

si tu as old dans toutes les cellules de la colonne Z, c'est que la condition IsError(F2.Cells(i, "Z").Value) est toujours vraie.

comme c'est lié à tes données, difficile de t'aider d'avantage sans fichier.

merci pour votre réponse voila le fichier je veux comparer les deux feuilles fichier existant et fichier importé en se basant sur la colonne G

4test.xlsm (424.70 Ko)

bonjour,

voici une correction possible, le statut se met en colonne Z du fichier importé, je pense que cela devrait être la colonne E.

le mettre dans la colonne Z du fichier existant n'a pas de sens, car tu n'y trouves que les lignes qui auront un statut old.

Sub VLookupA()

Dim F1 As Worksheet
Dim F2 As Worksheet

Dim plage As Range
Dim C As Range

Set F1 = Worksheets("fichier existant")
Set F2 = Worksheets("fichier importé")

Set plage = F2.Range("D2", F2.Range("D65536").End(xlUp))

For Each C In plage
        Set re = F1.Range("G:G").Find(Trim(C.Value), lookat:=xlPart)
        If re Is Nothing Then
        F2.Cells(C.Row, "Z") = "Nouveau"
        Else
        F2.Cells(C.Row, "Z") = "Old"
    End If
Next C

End Sub

merci ce code fonctionne super bien. j'ai une autre question si c'est possible je veux concaténer la colonne C de la feuille 1 avec la colonne c de la feuille 2 si les références sont identique exemple s'il y a une référence dans les deux feuille je veux afficher dans une colonne soit EE EB,BB, BE. ET MERCIIIII

bonjour,

une proposition

3khawla.xlsm (430.90 Ko)

merci pour votre réponse

Rechercher des sujets similaires à "programme qui affiche rien"