Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copier valeur depuis un autre classeur.

4 réponses
Avatar
Damien TRUJILLO
Bonjour,
j'ai un problème pour des factures: je m'explique j'ai deux classeur
facture.xls et clients.xls.
Client.xls se présente comme suis
code nom prenom
1 Moi je
2 toi tu
3 il lui
Dans facture.xls je voudrais mettre dans la cellule A1 le code du client
1 par exemple.
ensuite je voudrais que dans B1 il y ai le nom et dans B2 le prenom.
J'ai synthétisé mais l'esprit est là.
le classeur client.xls est fermé.
Je pense, c'est facile à dire je sais, qu'en VBA il faudrait ouvrir le
classeur client.xls puis copier toutes les valeurs dans des variables,
fermer client.xls et enfin tout recopier dans facture.xls.

MERCI D'AVANCE A CEUX QUI M'AIDERONT

4 réponses

Avatar
Norvi
Bonsoir,

Avec un formule comme celle-ci à mettre dans le fichier facture.xls :

=INDEX('C:MonDossierDansLequelJAiLeFichier[client.xls]Sheet1'!$A$2:$ D$13;EQUIV(A2;'C:MonDossierDansLequelJAiLeFichier[client.xls]Sheet1'!$ A$2:$A$13);2)

Ca devrait marcher.

N.
Avatar
ABED HADDOU
Bonsoir Damien,

Essai ce code ça devait marcher si la codification client est en
alphanumérique
'References=Microsoft ActiveX Data Obgects 2.8 Library

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
table
End Sub

C1..C2..ect
Public CodeC, NomC, PrenC
Sub table()
On Error Resume Next
Dim cnn As String
Dim sql As String
CodeC = ""
Dim Rst As ADODB.Recordset
cnn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data source=d:Clients.xls;" & _
"Extended properties=Excel 8.0;"
sql = "Select * from [Feuil1$];"
Set Rst = New ADODB.Recordset
i = 1
Rst.Open sql, cnn, adOpenForwardOnly
CodeC = ActiveCell.Previous
With Rst
Do While Not .EOF
ligne = ActiveCell.Row
If .Fields!Code = CodeC Then
NomC = .Fields!Nom
PrenC = .Fields!Prenom
Feuil1.Range("b" & ligne).Value = NomC
Feuil1.Range("C" & ligne).Value = PrenC
End If
.MoveNext
i = i + 1
Loop

Cordialement.



Bonjour,
j'ai un problème pour des factures: je m'explique j'ai deux classeur
facture.xls et clients.xls.
Client.xls se présente comme suis
code nom prenom
1 Moi je
2 toi tu
3 il lui
Dans facture.xls je voudrais mettre dans la cellule A1 le code du client
1 par exemple.
ensuite je voudrais que dans B1 il y ai le nom et dans B2 le prenom.
J'ai synthétisé mais l'esprit est là.
le classeur client.xls est fermé.
Je pense, c'est facile à dire je sais, qu'en VBA il faudrait ouvrir le
classeur client.xls puis copier toutes les valeurs dans des variables,
fermer client.xls et enfin tout recopier dans facture.xls.

MERCI D'AVANCE A CEUX QUI M'AIDERONT



Avatar
Damien TRUJILLO
Merci ABED HADDOU,
malheureusement le programme a un petit probleme,
en effet il me prend toujours la dernière valeur de la liste de code.
en fait il ne trouve pas par rapport au code que je met dans ma facture.

Merci si tu peux m'aider

Bonsoir Damien,

Essai ce code ça devait marcher si la codification client est en
alphanumérique
'References=Microsoft ActiveX Data Obgects 2.8 Library

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
table
End Sub

C1..C2..ect
Public CodeC, NomC, PrenC
Sub table()
On Error Resume Next
Dim cnn As String
Dim sql As String
CodeC = ""
Dim Rst As ADODB.Recordset
cnn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data source=d:Clients.xls;" & _
"Extended properties=Excel 8.0;"
sql = "Select * from [Feuil1$];"
Set Rst = New ADODB.Recordset
i = 1
Rst.Open sql, cnn, adOpenForwardOnly
CodeC = ActiveCell.Previous
With Rst
Do While Not .EOF
ligne = ActiveCell.Row
If .Fields!Code = CodeC Then
NomC = .Fields!Nom
PrenC = .Fields!Prenom
Feuil1.Range("b" & ligne).Value = NomC
Feuil1.Range("C" & ligne).Value = PrenC
End If
.MoveNext
i = i + 1
Loop

Cordialement.




Bonjour,
j'ai un problème pour des factures: je m'explique j'ai deux classeur
facture.xls et clients.xls.
Client.xls se présente comme suis
code nom prenom
1 Moi je
2 toi tu
3 il lui
Dans facture.xls je voudrais mettre dans la cellule A1 le code du client
1 par exemple.
ensuite je voudrais que dans B1 il y ai le nom et dans B2 le prenom.
J'ai synthétisé mais l'esprit est là.
le classeur client.xls est fermé.
Je pense, c'est facile à dire je sais, qu'en VBA il faudrait ouvrir le
classeur client.xls puis copier toutes les valeurs dans des variables,
fermer client.xls et enfin tout recopier dans facture.xls.

MERCI D'AVANCE A CEUX QUI M'AIDERONT





Avatar
ABED HADDOU
Bonsoir Damien,

Voici le code retouché

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
table
End Sub

Public CodeC, NomC, PrenC

Sub table()
'References=Microsoft ActiveX Data Obgects 2.8 Library
On Error Resume Next
Dim cnn As String
Dim sql As String
CodeC = ""
NomC = ""
PrenC = ""
Dim Rst As ADODB.Recordset
cnn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data source=d:Clients.xls;" & _
"Extended properties=Excel 8.0;"
sql = "Select * from [Feuil1$];"
Set Rst = New ADODB.Recordset
i = 1
Rst.Open sql, cnn, adOpenForwardOnly
CodeC = ActiveCell.Previous
With Rst
Do While Not .EOF
ligne = ActiveCell.Row
If .Fields!Code = CodeC Then
NomC = .Fields!Nom
PrenC = .Fields!Prenom
Exit Do
End If
.MoveNext
i = i + 1
Loop
If NomC <> "" Then
Feuil1.Range("b" & ligne).Value = NomC
Feuil1.Range("C" & ligne).Value = PrenC
Exit Sub
Else
MsgBox "Client inexistant !"
Feuil1.Range("A" & ligne).Activate
End If
End With
End Sub

A bientôt et Bonne soirée


Merci ABED HADDOU,
malheureusement le programme a un petit probleme,
en effet il me prend toujours la dernière valeur de la liste de code.
en fait il ne trouve pas par rapport au code que je met dans ma facture.

Merci si tu peux m'aider

Bonsoir Damien,

Essai ce code ça devait marcher si la codification client est en
alphanumérique
'References=Microsoft ActiveX Data Obgects 2.8 Library

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
table
End Sub

C1..C2..ect
Public CodeC, NomC, PrenC
Sub table()
On Error Resume Next
Dim cnn As String
Dim sql As String
CodeC = ""
Dim Rst As ADODB.Recordset
cnn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data source=d:Clients.xls;" & _
"Extended properties=Excel 8.0;"
sql = "Select * from [Feuil1$];"
Set Rst = New ADODB.Recordset
i = 1
Rst.Open sql, cnn, adOpenForwardOnly
CodeC = ActiveCell.Previous
With Rst
Do While Not .EOF
ligne = ActiveCell.Row
If .Fields!Code = CodeC Then
NomC = .Fields!Nom
PrenC = .Fields!Prenom
Feuil1.Range("b" & ligne).Value = NomC
Feuil1.Range("C" & ligne).Value = PrenC
End If
.MoveNext
i = i + 1
Loop

Cordialement.




Bonjour,
j'ai un problème pour des factures: je m'explique j'ai deux classeur
facture.xls et clients.xls.
Client.xls se présente comme suis
code nom prenom
1 Moi je
2 toi tu
3 il lui
Dans facture.xls je voudrais mettre dans la cellule A1 le code du client
1 par exemple.
ensuite je voudrais que dans B1 il y ai le nom et dans B2 le prenom.
J'ai synthétisé mais l'esprit est là.
le classeur client.xls est fermé.
Je pense, c'est facile à dire je sais, qu'en VBA il faudrait ouvrir le
classeur client.xls puis copier toutes les valeurs dans des variables,
fermer client.xls et enfin tout recopier dans facture.xls.

MERCI D'AVANCE A CEUX QUI M'AIDERONT