Comparer 2 cellules dans différents onglets erreur 1004

tibtelcom

XLDnaute Nouveau
Bonjour, j'ai un fichier avec 2 onglets, l'onglet 1 mon tableau, l'onglet 2 ma base de données. Je souhaiterai pouvoir inscrire un champ dans une cellule du tableau 1 et qu'automatiquement les autres champ liés à ce que j'ai écrit et qui se trouvent dans la base de données (onglet 2) s'écrivent dans l'onglet 1 :
Feuil1 : une colonne C avec les données (ici un nom) que je rentre, une colonne D où doivent se marquer automatiquement les autres données qui lui sont liées dans la BD.
Feuil2 : une colonne A avec tous les noms (qui va donc comparer si la valeur entrée dans Feuil1 colonne C est présente dans la colonne A) une colonne B où se trouvent les autres infos à mettre dans la colonne D feuil1.
Je joins le fichier excel pour illustrer

Voici mon début de code, pouvez vous me dire ce qui ne va pas stp, merci.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim j, lineMax As Integer

lineMax = Sheets("Feuil2").Range("b65536").End(xlUp).Row


If Target = Range(Cells(ActiveCell.Row, 3).Value) Then

For j = 1 To 4

If Sheets("Feuil1").Cells(ActiveCell.Row, 3) = Sheets("Feuil2").Range("A" & j) Then

Range(Cells(ActiveCell.Row, 4)).Select
Selection.Value = Sheets("Feuil2").Range("B" & j).Value
Else
MsgBox "Nom inconnu"
End If
Next j
End If

End Sub
 

Pièces jointes

  • test.xls
    18 KB · Affichages: 77
  • test.xls
    18 KB · Affichages: 76
  • test.xls
    18 KB · Affichages: 78

youky(BJ)

XLDnaute Barbatruc
Re : Comparer 2 cellules dans différents onglets erreur 1004

Grand salut pour ton 1er message
Si j'ai bien compris ...ceci, attention j'utilise Change et non Selection_Change
efface ta macro et copie en entier celle là..
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column <> 3 Or Target = "" Then Exit Sub
If IsNumeric(Application.Match(Target, Feuil2.[A1:A20], 0)) Then
Target.Offset(, 1) = Feuil2.Cells(Application.Match(Target, Feuil2.[A1:A20], 0), 2)
Else
MsgBox "Nom inconnu"
End If
End Sub
 

youky(BJ)

XLDnaute Barbatruc
Re : Comparer 2 cellules dans différents onglets erreur 1004

Voici une solution
Respect bien le chemin, si tu as des bugs va en fenetre exécution et copie ceci ...
Application.EnableEvents = True
et presse Enter pour retrouver les événements
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column <> 3 Or Target = "" Then Exit Sub
fichier = "'C:\Documents and Settings\Bruno JEUNE\Mes documents\[Materiaux.xls]Plafond'!$A$1:$B$65000"
Application.EnableEvents = False
Target.Offset(, 1).Formula = "=VLOOKUP(" & Target & "," & fichier & ",2,FALSE)"
If Application.IsNA(Target.Offset(, 1)) Then _
MsgBox "Nom inconnu": Target = "": Target.Offset(, 1) = "": Target.Select
Target.Offset(, 1).Value = Target.Offset(, 1).Value
Application.EnableEvents = True
End Sub
 

tibtelcom

XLDnaute Nouveau
Re : Comparer 2 cellules dans différents onglets erreur 1004

Voici une solution
Respect bien le chemin, si tu as des bugs va en fenetre exécution et copie ceci ...
Application.EnableEvents = True
et presse Enter pour retrouver les événements
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column <> 3 Or Target = "" Then Exit Sub
fichier = "'C:\Documents and Settings\Bruno JEUNE\Mes documents\[Materiaux.xls]Plafond'!$A$1:$B$65000"
Application.EnableEvents = False
Target.Offset(, 1).Formula = "=VLOOKUP(" & Target & "," & fichier & ",2,FALSE)"
If Application.IsNA(Target.Offset(, 1)) Then _
MsgBox "Nom inconnu": Target = "": Target.Offset(, 1) = "": Target.Select
Target.Offset(, 1).Value = Target.Offset(, 1).Value
Application.EnableEvents = True
End Sub

j'aurais une question par rapport à ce code, comment faire en sorte que cette macro ne s'applique pas sur toute la colonne 3 mais par exemple que sur la plage C4:C10 ?
Merci
 

youky(BJ)

XLDnaute Barbatruc
Re : Comparer 2 cellules dans différents onglets erreur 1004

re bonjour,
Voici j'ai modifié la 1ere ligne et la 3eme
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range(Target.Address), Range("C4:C10")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
fichier = "'C:\Documents and Settings\Bruno JEUNE\Mes documents\[Materiaux.xls]Plafond'!$A$1:$B$65000"
Application.EnableEvents = False
Target.Offset(, 1).Formula = "=VLOOKUP(" & Target & "," & fichier & ",2,FALSE)"
If Application.IsNA(Target.Offset(, 1)) Then _
MsgBox "Nom inconnu": Target = "": Target.Offset(, 1) = "": Target.Select
Target.Offset(, 1).Value = Target.Offset(, 1).Value
Application.EnableEvents = True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 393
Messages
2 088 006
Membres
103 695
dernier inscrit
acimi