Toujours dans le cadre de mon projet d'=E9changer des donn=E9es entre 2
classeurs, j'ai opt=E9 pour la solution des feuilles cach=E9es :
A partir d'un classeur je copie 2 pages vers un 2e classeur dont le
nom est pr=E9format=E9 par une variable.
la feuille cach=E9e de ce 2e classeur a toujours le m=EAme nom, ou je
stocke la valeur de mes variables dans une plage de longueur fixe, que
je veux r=E9cup=E9rer dans un 3e fichier qui les traitera.
pour importer les donn=E9es et les transformer en variables dans le 3e
classeur j'utilise le code suivant, qui me parait assez simple mais qui
plante :
Sub importe_don=E9es()
Dim classimport As String
Dim CW As Workbook
Set CW =3D ThisWorkbook 'mon 3e classeur
Dim Wimport As Workbook
classimport =3D Application.GetOpenFilename("Rapport de voyage (*.xls),
*=2Exls")
Workbooks.Open classimport
Set Wimport =3D Workbooks(Dir$(classimport))
Wimport.Sheets("echange donn=E9es").Range("B2:B85").Copy
CW.Sheets("donn=E9es import=E9es").Range("B2:B85").Paste
Application.CutCopyMode =3D False
Wimport.close
End Sub
J'ai le message d'erreur suivant =E0 la ligne CW.Sheets("donn=E9es
import=E9es").Range("B2:B85").Paste : "propri=E9t=E9 ou m=E9thode non
g=E9r=E9e par cet objet". Ce qui me laisse perplexe.
Mes recherches ne m'ont pas fournies de solution a ce probl=E8me.
Le code acc=E8de bien au classeur =E0 importer, je l'ai v=E9rifi=E9 par une
msgbox de (Wimport.Sheets("echange donn=E9es").Range("B1")), mais ne
veut pas coller
1=B0/ auriez vous une explication =E0 ce ph=E9nom=E8ne ?
Je voudrais =E9viter de s=E9lectionner ou d'activer le 2e classeur de
mani=E8re a ce que l'op=E9ration se fasse de mani=E8re masqu=E9e
Doit être saisie sur une seule ligne -- Salutations JJ
"plexus" a écrit dans le message de news:
Bonjour,
Toujours dans le cadre de mon projet d'échanger des données entre 2 classeurs, j'ai opté pour la solution des feuilles cachées : A partir d'un classeur je copie 2 pages vers un 2e classeur dont le nom est préformaté par une variable. la feuille cachée de ce 2e classeur a toujours le même nom, ou je stocke la valeur de mes variables dans une plage de longueur fixe, que je veux récupérer dans un 3e fichier qui les traitera. pour importer les données et les transformer en variables dans le 3e classeur j'utilise le code suivant, qui me parait assez simple mais qui plante :
Sub importe_donées() Dim classimport As String Dim CW As Workbook Set CW = ThisWorkbook 'mon 3e classeur Dim Wimport As Workbook classimport = Application.GetOpenFilename("Rapport de voyage (*.xls), *.xls") Workbooks.Open classimport Set Wimport = Workbooks(Dir$(classimport)) Wimport.Sheets("echange données").Range("B2:B85").Copy CW.Sheets("données importées").Range("B2:B85").Paste Application.CutCopyMode = False Wimport.close End Sub
J'ai le message d'erreur suivant à la ligne CW.Sheets("données importées").Range("B2:B85").Paste : "propriété ou méthode non gérée par cet objet". Ce qui me laisse perplexe. Mes recherches ne m'ont pas fournies de solution a ce problème. Le code accède bien au classeur à importer, je l'ai vérifié par une msgbox de (Wimport.Sheets("echange données").Range("B1")), mais ne veut pas coller
1°/ auriez vous une explication à ce phénomène ? Je voudrais éviter de sélectionner ou d'activer le 2e classeur de manière a ce que l'opération se fasse de manière masquée
Bonjour,
J'ai le message d'erreur suivant à la ligne CW.Sheets("données
importées").Range("B2:B85").Paste :
Doit être saisie sur une seule ligne
--
Salutations
JJ
"plexus" <lucienplexus@mageos.com> a écrit dans le message de news:
1160555254.879598.261310@m7g2000cwm.googlegroups.com...
Bonjour,
Toujours dans le cadre de mon projet d'échanger des données entre 2
classeurs, j'ai opté pour la solution des feuilles cachées :
A partir d'un classeur je copie 2 pages vers un 2e classeur dont le
nom est préformaté par une variable.
la feuille cachée de ce 2e classeur a toujours le même nom, ou je
stocke la valeur de mes variables dans une plage de longueur fixe, que
je veux récupérer dans un 3e fichier qui les traitera.
pour importer les données et les transformer en variables dans le 3e
classeur j'utilise le code suivant, qui me parait assez simple mais qui
plante :
Sub importe_donées()
Dim classimport As String
Dim CW As Workbook
Set CW = ThisWorkbook 'mon 3e classeur
Dim Wimport As Workbook
classimport = Application.GetOpenFilename("Rapport de voyage (*.xls),
*.xls")
Workbooks.Open classimport
Set Wimport = Workbooks(Dir$(classimport))
Wimport.Sheets("echange données").Range("B2:B85").Copy
CW.Sheets("données importées").Range("B2:B85").Paste
Application.CutCopyMode = False
Wimport.close
End Sub
J'ai le message d'erreur suivant à la ligne CW.Sheets("données
importées").Range("B2:B85").Paste : "propriété ou méthode non
gérée par cet objet". Ce qui me laisse perplexe.
Mes recherches ne m'ont pas fournies de solution a ce problème.
Le code accède bien au classeur à importer, je l'ai vérifié par une
msgbox de (Wimport.Sheets("echange données").Range("B1")), mais ne
veut pas coller
1°/ auriez vous une explication à ce phénomène ?
Je voudrais éviter de sélectionner ou d'activer le 2e classeur de
manière a ce que l'opération se fasse de manière masquée
Doit être saisie sur une seule ligne -- Salutations JJ
"plexus" a écrit dans le message de news:
Bonjour,
Toujours dans le cadre de mon projet d'échanger des données entre 2 classeurs, j'ai opté pour la solution des feuilles cachées : A partir d'un classeur je copie 2 pages vers un 2e classeur dont le nom est préformaté par une variable. la feuille cachée de ce 2e classeur a toujours le même nom, ou je stocke la valeur de mes variables dans une plage de longueur fixe, que je veux récupérer dans un 3e fichier qui les traitera. pour importer les données et les transformer en variables dans le 3e classeur j'utilise le code suivant, qui me parait assez simple mais qui plante :
Sub importe_donées() Dim classimport As String Dim CW As Workbook Set CW = ThisWorkbook 'mon 3e classeur Dim Wimport As Workbook classimport = Application.GetOpenFilename("Rapport de voyage (*.xls), *.xls") Workbooks.Open classimport Set Wimport = Workbooks(Dir$(classimport)) Wimport.Sheets("echange données").Range("B2:B85").Copy CW.Sheets("données importées").Range("B2:B85").Paste Application.CutCopyMode = False Wimport.close End Sub
J'ai le message d'erreur suivant à la ligne CW.Sheets("données importées").Range("B2:B85").Paste : "propriété ou méthode non gérée par cet objet". Ce qui me laisse perplexe. Mes recherches ne m'ont pas fournies de solution a ce problème. Le code accède bien au classeur à importer, je l'ai vérifié par une msgbox de (Wimport.Sheets("echange données").Range("B1")), mais ne veut pas coller
1°/ auriez vous une explication à ce phénomène ? Je voudrais éviter de sélectionner ou d'activer le 2e classeur de manière a ce que l'opération se fasse de manière masquée
plexus
Bonjour Jacky et merci de ta réponse,
j'ai finalement opté en désespoir de cause pour une autre méthode qui au final me satisfait mieux, même si je n'en perçois pas encore tous les effets secondaires indésirables :
Sub importe_donées() Dim typfichier As String Dim classimport As Variant Dim filtrindex As Integer Dim titre As String Dim nomceclass As String Dim msg, titre2 As String Dim bouton As Integer Dim rep As Long Dim CW As Workbook Dim Wimport As Workbook Dim i As Integer Dim donnéeimporT(1 To 85)
nomceclass = ThisWorkbook.Name Set CW = Workbooks(nomceclass)
Set Wimport = GetObject(classimport) For i = 2 To 85 CW.Sheets("données importées").Range("B" & i).Value = Wimport.Sheets("echange données").Range("B" & i).Value Next i
End Sub
cela semble me causer moins de conflits, et je n'ai pas besoin des mises en pages car seuls les valeurs m'intêressent.
Maintenant ces données représentent les valeurs des variables que je souhaitais importer dans mon calsseur CW afin de les y déclarer automatiquement : dans la colonne A, j'ai le nom de la variable dans la colonne B, j'ai sa valeur dans la colonne C, le type dans lequel je voudrais déclarer la variable.
1/ est-ce possible de déclarer de cette manière mes variables, (en sachant que je voudrais qu'elles soient public) ? ou dois-je déclarer "à la main" mes 85 variables et les affecter de même ? j'ai tenté avec cette procèdure mais je ne récolte que des erreurs...
Sub attribut_variables() Dim donnéesimporT(1 To 85, 1 To 3) As String Dim nomvar(1 To 85) As String Dim typvar(1 To 85) As String Dim valvar(1 To 85) As String
For j = 1 To 3 For i = 2 To 85 donnéesimporT(i, j) = Sheets("données importées").Cells(i, j).Value nomvar(i) = donnéesimporT(i, 1) valvar(i) = donnéesimporT(i, 2) typvar(i) = donnéesimporT(i, 3) Public Type testtypevar nomvar(i) as valvar(i) End Type Next i Next j
End Sub
Merci
Bonjour Jacky et merci de ta réponse,
j'ai finalement opté en désespoir de cause pour une autre méthode
qui au final me satisfait mieux, même si je n'en perçois pas encore
tous les effets secondaires indésirables :
Sub importe_donées()
Dim typfichier As String
Dim classimport As Variant
Dim filtrindex As Integer
Dim titre As String
Dim nomceclass As String
Dim msg, titre2 As String
Dim bouton As Integer
Dim rep As Long
Dim CW As Workbook
Dim Wimport As Workbook
Dim i As Integer
Dim donnéeimporT(1 To 85)
nomceclass = ThisWorkbook.Name
Set CW = Workbooks(nomceclass)
Set Wimport = GetObject(classimport)
For i = 2 To 85
CW.Sheets("données importées").Range("B" & i).Value =
Wimport.Sheets("echange données").Range("B" & i).Value
Next i
End Sub
cela semble me causer moins de conflits, et je n'ai pas besoin des
mises en pages car seuls les valeurs m'intêressent.
Maintenant ces données représentent les valeurs des variables que je
souhaitais importer dans mon calsseur CW afin de les y déclarer
automatiquement :
dans la colonne A, j'ai le nom de la variable
dans la colonne B, j'ai sa valeur
dans la colonne C, le type dans lequel je voudrais déclarer la
variable.
1/ est-ce possible de déclarer de cette manière mes variables, (en
sachant que je voudrais qu'elles soient public) ? ou dois-je déclarer
"à la main" mes 85 variables et les affecter de même ?
j'ai tenté avec cette procèdure mais je ne récolte que des
erreurs...
Sub attribut_variables()
Dim donnéesimporT(1 To 85, 1 To 3) As String
Dim nomvar(1 To 85) As String
Dim typvar(1 To 85) As String
Dim valvar(1 To 85) As String
For j = 1 To 3
For i = 2 To 85
donnéesimporT(i, j) = Sheets("données importées").Cells(i, j).Value
nomvar(i) = donnéesimporT(i, 1)
valvar(i) = donnéesimporT(i, 2)
typvar(i) = donnéesimporT(i, 3)
Public Type testtypevar
nomvar(i) as valvar(i)
End Type
Next i
Next j
j'ai finalement opté en désespoir de cause pour une autre méthode qui au final me satisfait mieux, même si je n'en perçois pas encore tous les effets secondaires indésirables :
Sub importe_donées() Dim typfichier As String Dim classimport As Variant Dim filtrindex As Integer Dim titre As String Dim nomceclass As String Dim msg, titre2 As String Dim bouton As Integer Dim rep As Long Dim CW As Workbook Dim Wimport As Workbook Dim i As Integer Dim donnéeimporT(1 To 85)
nomceclass = ThisWorkbook.Name Set CW = Workbooks(nomceclass)
Set Wimport = GetObject(classimport) For i = 2 To 85 CW.Sheets("données importées").Range("B" & i).Value = Wimport.Sheets("echange données").Range("B" & i).Value Next i
End Sub
cela semble me causer moins de conflits, et je n'ai pas besoin des mises en pages car seuls les valeurs m'intêressent.
Maintenant ces données représentent les valeurs des variables que je souhaitais importer dans mon calsseur CW afin de les y déclarer automatiquement : dans la colonne A, j'ai le nom de la variable dans la colonne B, j'ai sa valeur dans la colonne C, le type dans lequel je voudrais déclarer la variable.
1/ est-ce possible de déclarer de cette manière mes variables, (en sachant que je voudrais qu'elles soient public) ? ou dois-je déclarer "à la main" mes 85 variables et les affecter de même ? j'ai tenté avec cette procèdure mais je ne récolte que des erreurs...
Sub attribut_variables() Dim donnéesimporT(1 To 85, 1 To 3) As String Dim nomvar(1 To 85) As String Dim typvar(1 To 85) As String Dim valvar(1 To 85) As String
For j = 1 To 3 For i = 2 To 85 donnéesimporT(i, j) = Sheets("données importées").Cells(i, j).Value nomvar(i) = donnéesimporT(i, 1) valvar(i) = donnéesimporT(i, 2) typvar(i) = donnéesimporT(i, 3) Public Type testtypevar nomvar(i) as valvar(i) End Type Next i Next j