Recherche d'une cellule contenant une valeur dans une variable objet

Bonjour à tous,

Je souhaiterais remplir le fichier « Représentants par clients » avec les données du fichier « Représentants », que vous trouverez ci-dessous :

capture d e cran 2023 06 19 a 19 43 23 capture d e cran 2023 06 19 a 19 43 07

En gros, je souhaite récupérer les 2 premiers chiffres des numéros client (qui correspondent au département de domiciliation des clients) dans le fichier « Représentants par clients », afin de le rechercher dans le fichier « Représentants », et déterminer par la suite le commercial en charge du client, pour remplir la colonne Représentant du fichier « Représentants par clients ». J'espère que c'est assez clair !

Sub RemplissageReprésentants()

Dim ClasseurReprésentants As Workbook
' Je crée ma variable objet qui contiendra le classeur des noms des représentants.
Set ClasseurReprésentants = GetObject("/Users/Lamzo/Desktop/Représentants.xlsx")

Dim NomReprésentant As String
Dim NumDépartement As Integer
Dim Cellules As Range
Dim CelluleDépartement As Range
' C'est la cellule dans laquelle se trouvera le numéro de département que l'on cherchera plus bas.

For Each Cellules In Range("C2", Range("C2").End(xlDown))
      NumDépartement = Left(ActiveCell, 2)
      CelluleDépartement = ClasseurReprésentants.Sheets("Feuil1").Cells.Find(What:=NumDepartement, LookIn:=xlValues)
      NomReprésentant = CelluleDépartement.End(xlUp).Value
      ActiveCell.Offset(0, -1).Value = NomReprésentant
Next Cellules

End Sub

L'erreur dans mon code se situe à la ligne suivante :

capture d e cran 2023 06 19 a 19 54 53

D'ou vient mon erreur ?

Merci d'avance.

Lamine

Hello,

Je ferai plutot une rechercheV avec un left en pivotant ton tableau des representants.

mais je pense que l'erreur vient de cette instruction :

Dim ClasseurReprésentants As Workbook

à remplacer par

Dim ClasseurReprésentants As Object

Bonjour,

Merci pour ta réponse.

J'ai essayé de remplacer le type Workbook par Object, mais le problème demeure toujours sur la même ligne de code.

Pourrais tu me donner un exemple ou me détailler la méthode avec le rechercheV et le left dans mon cas ?

Je te remercie d'avance.

Bonjour,

Merci pour ta réponse.

J'ai essayé de remplacer le type Workbook par Object, mais le problème demeure toujours sur la même ligne de code.

Pourrais tu me donner un exemple ou me détailler la méthode avec le rechercheV et le left dans mon cas ?

Je te remercie d'avance.

Hello,

Une proposition PowerQuery, juste un clic droit sur le tableau vert puis actualiser

Un tableau code des représentants, et un tableau client à renseigner en amont

@+

1representant.xlsx (19.29 Ko)

Bonjour à tous !

Une proposition PowerQuery, juste un clic droit sur le tableau vert puis actualiser

Pas certain que Power Query fasse un heureux mariage avec Excel MAC 2016.....

Bonjour à tous,

Merci pour la proposition PowerQuery, mais je cherche vraiment à apprendre à exploiter les données d'une variable objet (ici mon fichier Représentants) dans un autre fichier excel (Représentants par clients).

J'ai finalement pu trouver l'erreur : vu que j'affectais la valeur d'un objet à une variable, il fallait juste mettre Set devant la variable !

Par contre, ma variable CelluleDépartement est vide et ne prend donc pas l'adresse de la cellule contenant la valeur de la variable NumDépartement.

Avez vous une idée d'ou vient le problème ?

Sub RemplissageReprésentants()

Dim ClasseurReprésentants As Workbook
' Je crée ma variable objet qui contiendra le classeur des noms des représentants.
Set ClasseurReprésentants = GetObject("/Users/Lamzo/Desktop/Représentants.xlsx")

Dim NomReprésentant As String
Dim NumDépartement As Integer
Dim Cellules As Range
Dim CelluleDépartement As Range
' C'est la cellule dans laquelle se trouvera le numéro de département que l'on cherchera plus bas.

Range("C2").Select
' On part de la cellule contenant le premier numéro client pour lancer la boucle ci-dessous.

For Each Cellules In Workbooks("Représentants par clients.xlsm").Sheets("Feuil1").Range("C2", Range("C2").End(xlDown))

      NumDépartement = Val(Left(ActiveCell, 2))
      ' On récupère les 2 premiers chiffres des numéros clients qui correspondent à leur numéro de département.
      Set CelluleDépartement = ClasseurReprésentants.Sheets("Feuil1").Cells.Find(What:=NumDepartement, LookIn:=xlValues, Lookat:=xlWhole)
      NomReprésentant = CelluleDépartement.End(xlUp).Value
      ActiveCell.Offset(0, -1).Value = NomReprésentant
      ActiveCell.Offset(1, 0).Select

Next Cellules

End Sub

Hello,

ton numéro de departement est correct ?

Salut, oui j'ai utilisé un Msgbox pour le tester et il prend bien les bonnes valeurs.

Finalement merci pour la remarque Rag02700 !

Il manquait en fait l'accent aigu sur mon NumDépartement dans la fonction Find.

Tout fonctionne bien maintenant !

Merci à tous !

Rechercher des sujets similaires à "recherche contenant valeur variable objet"