Copier les résultats d'une recherche dans un autre classeur2
sossso
-
sossso -
sossso -
Bonjour,
En fait , je suis un peu débutant en VBA et j'ai besoin de votre aide . Dans un classeur1 , j'ai créer une useform à la quelle je donne une date , une maturité et un taux1 , lorsque j'execute , elle me cherche un taux2 et taux3 qui correspond à ce taux 1 à partir d'un tableau . Mon problème c'est que je veux que ces informations : le taux2, taux3, taux 1 , date, maturité soient copié dans un autre classeur2 dans un tableau dans la feuille "Achats " dans les colonnes H , G , F ,C ,A .Qui ce qui manque pour les informations peuvent etre copiés , concentrez vous sur la fin du code . ci dessous mon code :
</code>
EDIT: Ajout de la coloration syntaxique.
En fait , je suis un peu débutant en VBA et j'ai besoin de votre aide . Dans un classeur1 , j'ai créer une useform à la quelle je donne une date , une maturité et un taux1 , lorsque j'execute , elle me cherche un taux2 et taux3 qui correspond à ce taux 1 à partir d'un tableau . Mon problème c'est que je veux que ces informations : le taux2, taux3, taux 1 , date, maturité soient copié dans un autre classeur2 dans un tableau dans la feuille "Achats " dans les colonnes H , G , F ,C ,A .Qui ce qui manque pour les informations peuvent etre copiés , concentrez vous sur la fin du code . ci dessous mon code :
<code>Private Sub CommandButton1_Click()
Dim d As Date
Dim s As String
s = ComboBox1.Text
Select Case s
Case Is = "52s"
Worksheets("52 W").Activate
Case Is = "2A"
Worksheets("2 ans").Activate
Case Is = "5A"
Worksheets("5 ans").Activate
Case Is = "10A"
Worksheets("10 ans").Activate
Case Is = "15A"
Worksheets("15 ans").Activate
Case Is = "20A"
Worksheets("20 ans").Activate
Case Is = "30A"
Worksheets("30 ans").Activate
End Select
d = TextBox2.Text
Range("b1").Value = d
Dim l As Integer
l = Range(Range("a14"), Range("a14").End(xlDown)).Count
Dim aa As Double
Dim bb As Double
Dim a As Integer
Dim b As Integer
Dim cost As Boolean
cost = False
Dim r As String
Dim i As Integer
For i = 1 To l
If Range("a" & 13 + i).Value = r Then
aa = Range("c" & 13 + i).Value
bb = Range("d" & 13 + i).Value
cost = True
i = l + 1
End If
Next
If cost = False Then
MsgBox ("Verifier le taux1")
Else
Dim appExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel
'Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set wbExcel=
appExcel.Workbooks.Open("C:\Users\sossso\Desktop\\classeur2.xls")
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets("Achats")
Dim lo As Integer
lo = wsExcel.Range(wsExcel.Range("a6"), wsExcel.Range("a6").End(xlDown)).Count
lo = lo + 6
wsExcel.Range("a" & lo).Value = d
wsExcel.Range("c" & lo).Value = ComboBox1.Text
wsExcel.Range("h" & lo).Value = TextBox3.Text
wsExcel.Range("f" & lo).Value = aa
wsExcel.Range("g" & lo).Value = bb
</code>
EDIT: Ajout de la coloration syntaxique.
11 réponses
-
Bonjour,
lo = wsExcel.Range(wsExcel.Range("a6"), wsExcel.Range("a6").End(xlDown)).Row 'ou plus simple lo = wsExcel.Range("A65535").End(xlUp).Row-
Bonjour ,
Merci pour votre proposition mais normalement , J'ai essayé ça mais c'est la même chose , le problème c'est qu'il manque quelque chose à la fin du code . J'ai essayer de mettre à la finwbExcel.Close
, cela marche mais lorsque le classeur2 est ouvert il me demande à chaque fois d' enregistrer le classeur 2 avec un autre nom . Moi je veux que ces données soient copiés directement dans les places que j'ai mentionné dans la feuille "marketing" classeur2 à chaque fois que j'utilise ma Useform. Qu'est ce que vous me proposez ? et merci
-
-
oui je suis vraiment Désolé , je voulais dire que les données soient copiés dans la feuille "Achats" du classeur2 . les informations qui sont représentés dans le code par les variables : d, Combobox1.text, Textbox3.text , aa ,bb ; je les trouve dans le fichier classeur1 où il existe le code , et je veux que ces informations soient copiés dans un autre classeur2 dans un tableau dans la feuille "Achats " dans les colonnes A , C , H ,F ,G .
J'ai essayer d'ajouter à la finwbExcel.Close
, cela marche mais lorsque le classeur2 est ouvert il me demande à chaque fois d' enregistrer le classeur 2 avec un autre nom . Moi je veux que ces données soient copiés directement dans les places que j'ai mentionné dans la feuille "Achats" classeur2 à chaque fois que j'utilise ma Useform. J'espère que ça soit claire . merci -
Re,
essayez ceci:
par contre comprens pas le lo=lo+6
Private Sub CommandButton1_Click() Dim d As Date Dim s As String Dim l As Integer Dim aa As Double Dim bb As Double Dim a As Integer Dim b As Integer Dim cost As Boolean Dim r As String Dim i As Integer s = ComboBox1.Text Select Case s Case Is = "52s" Worksheets("52 W").Activate Case Is = "2A" Worksheets("2 ans").Activate Case Is = "5A" Worksheets("5 ans").Activate Case Is = "10A" Worksheets("10 ans").Activate Case Is = "15A" Worksheets("15 ans").Activate Case Is = "20A" Worksheets("20 ans").Activate Case Is = "30A" Worksheets("30 ans").Activate Case Else End Select d = TextBox2.Text Range("b1").Value = d l = Range(Range("a14"), Range("a14").End(xlDown)).Count cost = False For i = 1 To l If Range("a" & 13 + i).Value = r Then aa = Range("c" & 13 + i).Value bb = Range("d" & 13 + i).Value cost = True 'i = l + 1 Exit For End If Next i If cost = False Then MsgBox ("Verifier le taux1") Else Dim appExcel As Excel.Application 'Application Excel Dim wbExcel As Excel.Workbook 'Classeur Excel Dim wsExcel As Excel.Worksheet 'Feuille Excel 'Ouverture de l'application Set appExcel = CreateObject("Excel.Application") 'Ouverture d'un fichier Excel Set wbExcel = appExcel.Workbooks.Open("C:\Users\sossso\Desktop\\classeur2.xls") 'wsExcel correspond à la première feuille du fichier Set wsExcel = wbExcel.Worksheets("Achats") Dim lo As Long lo = wsExcel.Range(wsExcel.Range("a6"), wsExcel.Range("a6").End(xlDown)).Row lo = lo + 6 wsExcel.Range("a" & lo).Value = d wsExcel.Range("c" & lo).Value = ComboBox1.Text wsExcel.Range("h" & lo).Value = TextBox3.Text wsExcel.Range("f" & lo).Value = aa wsExcel.Range("g" & lo).Value = bb Application.DisplayAlerts = False wbExcel.Close True Application.DisplayAlerts = True Set wbExcel = Nothing Set appExcel = Nothing End If End Sub -
la commande
lo = wsExcel.Range(wsExcel.Range("a6"), wsExcel.Range("a6").End(xlDown)).Row, indique le fait que les données doivent etre enregister à partir de la ligne vide , c'est seulement pour indiquer la position .
lo = lo + 6
En fait votre code n'a pas marché aussi :( .Avez vous une autre solution que je peux utiliser . par exemple une commande commewbExcel.Close
, n'existe pas un truc comme ça pour enregistrement , je sais pas par exemplewbExcel.Save
. Aidez moi Svp -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Normalement je veux que les données que j'ai trouvé dans classeur 1 soient copiés dans classeur 2 , j'ai essayé avec
wbExcel.save
mais ça n'a pas marché -
Re,
Y a maldonne, copier les donnees c'est ce code:wsExcel.Range("a" & lo).Value = d wsExcel.Range("c" & lo).Value = ComboBox1.Text wsExcel.Range("h" & lo).Value = TextBox3.Text wsExcel.Range("f" & lo).Value = aa wsExcel.Range("g" & lo).Value = bb
enregistrer la classeur c'est celui-ci:wbExcel.save
donc un peu de reflection avant d'ecrire .............. -
Moi ce que je veux c'est les données soient copiés , mais lorsque j'exécute le code :
wsExcel.Range("a" & lo).Value = d
wsExcel.Range("c" & lo).Value = ComboBox1.Text
wsExcel.Range("h" & lo).Value = TextBox3.Text
wsExcel.Range("f" & lo).Value = aa
wsExcel.Range("g" & lo).Value = bb
les données ne se copient pas , alors où est le problème ? -
Re,
mettez un point d'arret a cette ligne:wsExcel.Range("a" & lo).Value = d
lancez votre macro, des que le programme s'arrete, passez le curseur de la souris sur lo pour voir sa valeur -
je l'ai fais , la valeur de lo est 466 . et c'est exactement le numéro de la ligne qui est vide dans le classeur2 où je veux copier mes données . donc le principe pour lequel j'ai met la variable lo est juste . mais comment je peux résoudre mon problème qui est de copier les informations dans cette ligne vide ?
-
Re,
deplacez le point d'arret vers ligne
Application.DisplayAlerts = False
et regardez ce qu'il y a dans les variables et objets les lignes precedentes -
Merci pour votre aide . mon problème est résolu . j'ai remplacer
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
'Set wbExcel = appExcel.Workbooks.Open("C:\Users\sossso\Desktop\classeur2.xls")
'wsExcel correspond à la première feuille du fichier
'Set wsExcel = wbExcel.Worksheets("Achats")
par :Set wbExcel = Workbooks("classeur2.xls")
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets("Achats")
Merci encore pour votre aide :)