A voir également:
- Données VB5 vers Excel
- Liste déroulante excel - Guide
- Trier des données excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
19 réponses
Bonjour,
Ca ne me parais pas compliqué, dans VB5 sauver ton tableau dans un fichier temporaire et le rentrer dans excel de la même façon. (en VBA)
A+
Ca ne me parais pas compliqué, dans VB5 sauver ton tableau dans un fichier temporaire et le rentrer dans excel de la même façon. (en VBA)
A+
Merci, la réponse me rassure mais ne m'aide pas beaucoup...
J'ai déjà utilisé un bout de programme qui tranférait des données d'une textbox vers un fichier Txt. ( utilisation de
Open ... et write ...). Le résultat n'était pas fameux, les données étaient modifiées. En essayant d'adapter ces quelques lignes de code pour Excel, je tranfère bien les données mais dans une seule colonne !
d'ou ma question ...
Merci pour des explications plus détaillées
J'ai déjà utilisé un bout de programme qui tranférait des données d'une textbox vers un fichier Txt. ( utilisation de
Open ... et write ...). Le résultat n'était pas fameux, les données étaient modifiées. En essayant d'adapter ces quelques lignes de code pour Excel, je tranfère bien les données mais dans une seule colonne !
d'ou ma question ...
Merci pour des explications plus détaillées
Quel type de donnée ?
Si texte la longeur peut-elle être définie ? Si oui, employer un fichier à accès direct (Random)
Donne des détails et je verrais pour te pondre un début de solution.
A+
Si texte la longeur peut-elle être définie ? Si oui, employer un fichier à accès direct (Random)
Donne des détails et je verrais pour te pondre un début de solution.
A+
Sympa de me redonner quelques espoirs...
Je peux définir un cas simple : Je veux transférer d'une textbox VB5 dans Excel, une matrice 2x11, cad 2 colonnes et 11 lignes :
- Dans la 1ère ligne on "écrit" par exemple case 1 "x" et case 2 : " f(x)
- dans toutes les autres cases figurent les données soit 20 valeurs décrites par XX, XX.
A partir d'un bout de code de principe basé sur cet exemple simple , je pourrais ( je suppose) l'étendre à n'importe quel type de matrice
Merci à l'avance
A+
Je peux définir un cas simple : Je veux transférer d'une textbox VB5 dans Excel, une matrice 2x11, cad 2 colonnes et 11 lignes :
- Dans la 1ère ligne on "écrit" par exemple case 1 "x" et case 2 : " f(x)
- dans toutes les autres cases figurent les données soit 20 valeurs décrites par XX, XX.
A partir d'un bout de code de principe basé sur cet exemple simple , je pourrais ( je suppose) l'étendre à n'importe quel type de matrice
Merci à l'avance
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Il y a beaucoups de façon pour transmettre des données de VB à excel, mais comme tu parle de tableau voila un exemple, non tester si problème tu dit.
DANS VB
DANS EXCEL
A+
DANS VB
Option Explicit Type ERG1 VarTxt1 As String * 30 VarTxt2 As String * 30 End Type Dim TB(10) As ERG1 Dim temp As String Dim Chemin As String '2 colonnes de textBox indexées 'colonne 1 = TxrCol1(0) à...TxrCol1(10) 'colonne 2 = TxrCol2(0) à...TxrCol2(10) '1Bouton sauver Private Sub Sauver_Click() Dim Fich As Integer, i As Integer Chemin = App.Path 'noter le répertoir temp = Chemin & "\Temporaire.FFF" Fich = FreeFile Open temp For Random As #Fich Len = Len(ERG1) For i = 0 To 10 Put #Fich, i + 1, TB(i) Next i Close End Sub Private Sub TxrCol1_Change(Index As Integer) TB(Index).VarTxt1 = TxrCol1(Index).Text End Sub Private Sub TxrCol2_Change(Index As Integer) TB(Index).VarTxt2 = TxrCol2(Index).Text End Sub
DANS EXCEL
Option Explicit Type ERG1 VarTxt1 As String * 30 VarTxt2 As String * 30 End Type Dim TB(10) As ERG1 Dim temp As String Dim Chemin As String 'Met les données dans Feuil1 et de A1 à B11 Sub ColleTB() Dim Fich As Integer, i As Integer Chemin = Application.Path 'même répertoir temp = Chemin & "\Temporaire.FFF" Sheets("Feuil1").Select Fich = FreeFile Open temp For Random As #Fich Len = Len(ERG1) For i = 0 To 10 Get #Fich, i + 1, TB(i) Cells(i + 1, 1) = Trim(TB(i).VarTxt1) Cells(i + 1, 2) = Trim(TB(i).VarTxt2) Next i Close End Sub
A+
- Merci de ton aide. Je pianote avec VB5 depuis 2 semaines et j'ai réussi à faire du calcul, présenter les résultats sous forme de courbes et tableaux de chiffres mais dans le cas présent mes connaissances sont nettement insuffisantes !
- J'ai crée un projet VB5 avec ton code + un petit module créeant mon tableau de chiffres et déclaré TxrCol1 et 2. Par ailleurs j'ai crée dans Excel / VBA la macro avec ton code ( et "private type ERG1" ).
-Question 1 : concernant le chemin j'ai laissé ton instruction telle que : VB5 dit que "Dans le cas de l'objet App, elle représente le chemin du fichier .vbp du projetet je souhaite le mettre dans le répertoire courant. Est-ce correct ? sinon quelle est la syntaxe ...
- Maintenant après avoir appuyé sur le bouton "sauver", ça bloque à l'ouverture du fichier "temp" : ERG1 ne serait pas déclarée ??
code actuel crée dans VB5 :
Option Explicit
Private Type ERG1
VarTxt1 As String * 30
VarTxt2 As String * 30
End Type
Dim TB(10) As ERG1
Dim temp As String
Dim Chemin As String
'2 colonnes de textBox indexées
'colonne 1 = TxrCol1(0) à...TxrCol1(10)
'colonne 2 = TxrCol2(0) à...C(10)
'1Bouton sauver
Private Sub Sauver_Click()
Dim Fich As Integer, i As Integer
Chemin = App.Path 'noter le répertoir
temp = Chemin & "\Temporaire.FFF"
Fich = FreeFile
Open temp For Random As #Fich Len = Len(ERG1)
For i = 0 To 10
Put #Fich, i + 1, TB(i)
Next i
End Sub
Private Sub TxrCol1_Change(Index As Integer)
TB(Index).VarTxt1 = TxrCol1(Index).Text
End Sub
Private Sub TxrCol2_Change(Index As Integer)
TB(Index).VarTxt2 = TxrCol2(Index).Text
End Sub
Private Sub form_Load()
Dim Y(20), TxrCol1(12), TxrCol2(12), A$, i
A$ = Chr$(13) + Chr$(10)
For i = 0 To 10
Y(i) = i * 5 ' valeurs de la fonction à stocker dans Excel avec les abcisses x
Next i
For i = 0 To 10
TxrCol1(i) = i
TxrCol2(i) = Y(i)
tableau1 = tableau1.Text & "..." & A$ ' affichage du tableau dans la textbox
tableau1 = tableau1.Text & " I = " & Format(i, "00") & " Y = " & Format(Y(i), "00.0") & A$
Next i
End Sub
A+
- J'ai crée un projet VB5 avec ton code + un petit module créeant mon tableau de chiffres et déclaré TxrCol1 et 2. Par ailleurs j'ai crée dans Excel / VBA la macro avec ton code ( et "private type ERG1" ).
-Question 1 : concernant le chemin j'ai laissé ton instruction telle que : VB5 dit que "Dans le cas de l'objet App, elle représente le chemin du fichier .vbp du projetet je souhaite le mettre dans le répertoire courant. Est-ce correct ? sinon quelle est la syntaxe ...
- Maintenant après avoir appuyé sur le bouton "sauver", ça bloque à l'ouverture du fichier "temp" : ERG1 ne serait pas déclarée ??
code actuel crée dans VB5 :
Option Explicit
Private Type ERG1
VarTxt1 As String * 30
VarTxt2 As String * 30
End Type
Dim TB(10) As ERG1
Dim temp As String
Dim Chemin As String
'2 colonnes de textBox indexées
'colonne 1 = TxrCol1(0) à...TxrCol1(10)
'colonne 2 = TxrCol2(0) à...C(10)
'1Bouton sauver
Private Sub Sauver_Click()
Dim Fich As Integer, i As Integer
Chemin = App.Path 'noter le répertoir
temp = Chemin & "\Temporaire.FFF"
Fich = FreeFile
Open temp For Random As #Fich Len = Len(ERG1)
For i = 0 To 10
Put #Fich, i + 1, TB(i)
Next i
End Sub
Private Sub TxrCol1_Change(Index As Integer)
TB(Index).VarTxt1 = TxrCol1(Index).Text
End Sub
Private Sub TxrCol2_Change(Index As Integer)
TB(Index).VarTxt2 = TxrCol2(Index).Text
End Sub
Private Sub form_Load()
Dim Y(20), TxrCol1(12), TxrCol2(12), A$, i
A$ = Chr$(13) + Chr$(10)
For i = 0 To 10
Y(i) = i * 5 ' valeurs de la fonction à stocker dans Excel avec les abcisses x
Next i
For i = 0 To 10
TxrCol1(i) = i
TxrCol2(i) = Y(i)
tableau1 = tableau1.Text & "..." & A$ ' affichage du tableau dans la textbox
tableau1 = tableau1.Text & " I = " & Format(i, "00") & " Y = " & Format(Y(i), "00.0") & A$
Next i
End Sub
A+
Dans excel, tout le code doit être dans le module de Feuil1
Pour le chemin, ce n'est pas recommander de mettre ton fichier dans le réperyoir "courant" ça change tout le temps.
Mais tu peu le mettre dans un répertoir précis
et mettre les deux même lignes dans VB et excel.
et j'ai fait une erreur dans l'ouverture fichier,rectifier par..
Maintenant j'ai tester et ça fonctionne.
A+
Pour le chemin, ce n'est pas recommander de mettre ton fichier dans le réperyoir "courant" ça change tout le temps.
Mais tu peu le mettre dans un répertoir précis
Chemin = "C:\nom Répertoir\ nom sous répertoir"
et mettre les deux même lignes dans VB et excel.
et j'ai fait une erreur dans l'ouverture fichier,rectifier par..
Open temp For Random As #Fich Len = Len(TB(0))
Maintenant j'ai tester et ça fonctionne.
A+
Bonjour,
On en est pas loin mais en faisant tourner le code ci-après ça coince toujours à la ligne "Open ..." malgré la modif.
J'ai modifié le code VBA et crée un fichier Excel 'Temporaire.xls" dans mon répertoire à l'adresse indiquée...
Désolé de te relancer mais je ne vois pas pourquoi ça ne marche pas chez moi...
Merci encore
Option Explicit
Private Type ERG1
VarTxt1 As String * 30
VarTxt2 As String * 30
End Type
Dim TB(10) As ERG1
Dim temp As String
Dim Chemin As String
'2 colonnes de textBox indexées
'colonne 1 = TxrCol1(0) à...TxrCol1(10)
'colonne 2 = TxrCol2(0) à...C(10)
'1Bouton sauver
' ............................................................................
Private Sub Sauver_Click()
Dim Fich As Integer, i As Integer
'Chemin = App.Path 'noter le répertoir
'Chemin = "C:\nom Répertoir\ nom sous répertoir"
Chemin = " H:\Mes documents\VB5-isolation\outils de base\tableau Excel "
temp = Chemin & "\Temporaire.FFF"
Fich = FreeFile
Open temp For Random As #Fich Len = Len(TB(0))
'Open temp For Random As #Fich Len = Len(ERG1)
For i = 0 To 10
Put #Fich, i + 1, TB(i)
Next i
End Sub
Private Sub TxrCol1_Change(Index As Integer)
TB(Index).VarTxt1 = TxrCol1(Index).Text
End Sub
Private Sub TxrCol2_Change(Index As Integer)
TB(Index).VarTxt2 = TxrCol2(Index).Text
End Sub
Private Sub form_Load()
Dim Y(20), TxrCol1(12), TxrCol2(12), A$, i
A$ = Chr$(13) + Chr$(10)
For i = 0 To 10
Y(i) = i * 5
Next i
For i = 0 To 10
TxrCol1(i) = i
TxrCol2(i) = Y(i)
tableau1 = tableau1.Text & "..." & A$
tableau1 = tableau1.Text & " I = " & Format(i, "00") & " Y = " & Format(Y(i), "00.0") & A$
Next i
End Sub
On en est pas loin mais en faisant tourner le code ci-après ça coince toujours à la ligne "Open ..." malgré la modif.
J'ai modifié le code VBA et crée un fichier Excel 'Temporaire.xls" dans mon répertoire à l'adresse indiquée...
Désolé de te relancer mais je ne vois pas pourquoi ça ne marche pas chez moi...
Merci encore
Option Explicit
Private Type ERG1
VarTxt1 As String * 30
VarTxt2 As String * 30
End Type
Dim TB(10) As ERG1
Dim temp As String
Dim Chemin As String
'2 colonnes de textBox indexées
'colonne 1 = TxrCol1(0) à...TxrCol1(10)
'colonne 2 = TxrCol2(0) à...C(10)
'1Bouton sauver
' ............................................................................
Private Sub Sauver_Click()
Dim Fich As Integer, i As Integer
'Chemin = App.Path 'noter le répertoir
'Chemin = "C:\nom Répertoir\ nom sous répertoir"
Chemin = " H:\Mes documents\VB5-isolation\outils de base\tableau Excel "
temp = Chemin & "\Temporaire.FFF"
Fich = FreeFile
Open temp For Random As #Fich Len = Len(TB(0))
'Open temp For Random As #Fich Len = Len(ERG1)
For i = 0 To 10
Put #Fich, i + 1, TB(i)
Next i
End Sub
Private Sub TxrCol1_Change(Index As Integer)
TB(Index).VarTxt1 = TxrCol1(Index).Text
End Sub
Private Sub TxrCol2_Change(Index As Integer)
TB(Index).VarTxt2 = TxrCol2(Index).Text
End Sub
Private Sub form_Load()
Dim Y(20), TxrCol1(12), TxrCol2(12), A$, i
A$ = Chr$(13) + Chr$(10)
For i = 0 To 10
Y(i) = i * 5
Next i
For i = 0 To 10
TxrCol1(i) = i
TxrCol2(i) = Y(i)
tableau1 = tableau1.Text & "..." & A$
tableau1 = tableau1.Text & " I = " & Format(i, "00") & " Y = " & Format(Y(i), "00.0") & A$
Next i
End Sub
A force de modifier tu n'a plus rien de convenable, tu à bien tes 11 textBox avec index de 0 à 10 pour TxrCol1 et idem pour TxrCol2 ?
Reprend le code exact dans mon poste précédant, tu ne change que la ligne Chemin et Private pour Type.
RIEN D'AUTRE
Et le libellé du chemin doit être précis, déja que tu met un espace devant le H.. Grrrr
Pour être sûr que tu écrit le bon chemin tu ouvre l'exmplorateur de fichier, tu va dans le répertoir concerné, dans la ligne du haut tu copie le chemin et tu le colle entre guillemets sur Chemin = "...COLLER"
Et Mes documents dans H: ??? en principe il n'y à pas de répertoir direct pour mes documents
Pour le test met..
Chemin = "C:" dans VB et excel
Reprend le code exact dans mon poste précédant, tu ne change que la ligne Chemin et Private pour Type.
RIEN D'AUTRE
Et le libellé du chemin doit être précis, déja que tu met un espace devant le H.. Grrrr
Pour être sûr que tu écrit le bon chemin tu ouvre l'exmplorateur de fichier, tu va dans le répertoir concerné, dans la ligne du haut tu copie le chemin et tu le colle entre guillemets sur Chemin = "...COLLER"
Et Mes documents dans H: ??? en principe il n'y à pas de répertoir direct pour mes documents
Pour le test met..
Chemin = "C:" dans VB et excel
Bonsoir,
- Je progresse ( lentement ) : J'ai repris ton code de départ ( VB5 et VExcel ), fait les modif dans les 2 codes ( Private...,Open...) et crée dans C: un répertoire VB5 ( soit : Chemin = "C:\VB5" ).
- Dans Excel j'ai crée Temporaire.xls et copié le code dans "Projet VBA feuille1 Excel modifié" d'ou une macro "feuil.ColleTB"
-Je lance la panip : le code VB5 passe bien et il me crée un fichier C:\VB5\ Temporaire.FFF. Maintenant si j'ouvre le fichier Excel "Temporaire.xls et que je lance la macro, rien ne se passe. Le débogger s'arrete à "sub colleTB() ?
- En fait comme je ne comprend pas la logique des évènements, je suis vite bloqué : Je m'attendais au départ à ce que VB5 me crée directement un fichier .xls avec les données dans les 2 colonnes. Quand j'ai vu ton code "dans Excel " je me suis dit que VB5 créeait un fichier temporaire.FFF qui lui était transformé par la macro en fichier.xls...
Si tu as la patience de me dire au moins quelle est la bonne logique ce serait bien et s'il te reste du temps ,tu me dis quoi faire pour réussir à placer ces 2 colonnes de chiffres dans un .xls...
nota : j'ai même un doute de plus, Je génère dans la petite procédure " Private sub form Load" les 11 x 2 nombres et dans cette même procédure je fais TxrCol1(i) = i et TxrCol2(i) = Y(i) , ça au moins c'est bien correct ?
Enfin si tu arrives à me sortir de cette galère, tu me diras STP quel tutos pourrait m'ouvrir un peu l'esprit sur le sujet car j'ai compris qu'il y avait en plus plusieurs manières d'arriver à transférer des données de VB5 à Excel...
A+
- Je progresse ( lentement ) : J'ai repris ton code de départ ( VB5 et VExcel ), fait les modif dans les 2 codes ( Private...,Open...) et crée dans C: un répertoire VB5 ( soit : Chemin = "C:\VB5" ).
- Dans Excel j'ai crée Temporaire.xls et copié le code dans "Projet VBA feuille1 Excel modifié" d'ou une macro "feuil.ColleTB"
-Je lance la panip : le code VB5 passe bien et il me crée un fichier C:\VB5\ Temporaire.FFF. Maintenant si j'ouvre le fichier Excel "Temporaire.xls et que je lance la macro, rien ne se passe. Le débogger s'arrete à "sub colleTB() ?
- En fait comme je ne comprend pas la logique des évènements, je suis vite bloqué : Je m'attendais au départ à ce que VB5 me crée directement un fichier .xls avec les données dans les 2 colonnes. Quand j'ai vu ton code "dans Excel " je me suis dit que VB5 créeait un fichier temporaire.FFF qui lui était transformé par la macro en fichier.xls...
Si tu as la patience de me dire au moins quelle est la bonne logique ce serait bien et s'il te reste du temps ,tu me dis quoi faire pour réussir à placer ces 2 colonnes de chiffres dans un .xls...
nota : j'ai même un doute de plus, Je génère dans la petite procédure " Private sub form Load" les 11 x 2 nombres et dans cette même procédure je fais TxrCol1(i) = i et TxrCol2(i) = Y(i) , ça au moins c'est bien correct ?
Enfin si tu arrives à me sortir de cette galère, tu me diras STP quel tutos pourrait m'ouvrir un peu l'esprit sur le sujet car j'ai compris qu'il y avait en plus plusieurs manières d'arriver à transférer des données de VB5 à Excel...
A+
Tu ne répond pas sur.. Tu à bien créer 22 TextBox. (comme demandé)
le principe,
Dans VB5 créer un fichier qui n'a rien à voir avec excel et le sauver
Dans excel faire une macro qui lit ce fichiere et le transfert dans des cellules.
1°) Vérifier dans le répertoir C:\VB5 qu'il y à bien le fichier Temporaire.FFF
2°) Voir s'il à bien +- 1K
3°) ouvrir un nouveau classeur excel ET NE RIEN RENOMMER
4°) Taper Alt+F11 pour entrer dans l'éditeur VBA
5°) Ouvrir un module >> Insertion >> Module
6°) Dans cette nouvelle fenêtre (Module1) coller EXACTEMENT le code ci-dessous (rien changer)
7°) Mettre le cureseur sur le C de Chemin... Taper F5
Si tout se passe bien le contenu du fichier devrait se trouver sur la Feuil1 du classeur, dans les cellules de A1 à B11
Il y a effectivement moyen de copier directement les données dans un classeur excel mais c'est un peu plus compliqué, maitrise déja un peu VB5 et le VBA d'excel qui se ressemble beaucoups et ont en reparleras.
Notamment les fichiers, surtout pour le VB5
Je n'avai pas donner tout ces détails je pensai que tu avais quelque connaissances !
Pourquoi faire un programme en VB5 alors que tu peu directement le faire dans excel ?
le principe,
Dans VB5 créer un fichier qui n'a rien à voir avec excel et le sauver
Dans excel faire une macro qui lit ce fichiere et le transfert dans des cellules.
1°) Vérifier dans le répertoir C:\VB5 qu'il y à bien le fichier Temporaire.FFF
2°) Voir s'il à bien +- 1K
3°) ouvrir un nouveau classeur excel ET NE RIEN RENOMMER
4°) Taper Alt+F11 pour entrer dans l'éditeur VBA
5°) Ouvrir un module >> Insertion >> Module
6°) Dans cette nouvelle fenêtre (Module1) coller EXACTEMENT le code ci-dessous (rien changer)
Type ERG1 VarTxt1 As String * 30 VarTxt2 As String * 30 End Type Dim TB(10) As ERG1 Dim temp As String Dim Chemin As String Sub ColleTB() Dim Fich As Integer, i As Integer Chemin = "C:\VB5" temp = Chemin & "\Temporaire.FFF" Sheets("Feuil1").Select Fich = FreeFile Open temp For Random As #Fich Len = Len(TB(0)) For i = 0 To 10 Get #Fich, i + 1, TB(i) Cells(i + 1, 1) = TB(i).VarTxt1 Cells(i + 1, 2) = TB(i).VarTxt2 Next i End Sub
7°) Mettre le cureseur sur le C de Chemin... Taper F5
Si tout se passe bien le contenu du fichier devrait se trouver sur la Feuil1 du classeur, dans les cellules de A1 à B11
Il y a effectivement moyen de copier directement les données dans un classeur excel mais c'est un peu plus compliqué, maitrise déja un peu VB5 et le VBA d'excel qui se ressemble beaucoups et ont en reparleras.
Notamment les fichiers, surtout pour le VB5
Je n'avai pas donner tout ces détails je pensai que tu avais quelque connaissances !
Pourquoi faire un programme en VB5 alors que tu peu directement le faire dans excel ?
RE bonsoir,
Je vais suivre à la lettre tes instructions ce soir (ou cette nuit !)...
- J'utilise VB5 ( depuis peu) car pour sésoudre des petits Pbs (équa diff de la chaleur en éléments finis) et présenter les résultats graphiques et tabeaux l'IHM est pratique.
- Un point important : j'ai cru que tu plaisantais en disant de créer 22 textbox, moi j'en ai crée 1 dans laquelle mes résultats apparaissent ( voir la petite procédure déjà envoyée ) ... Si j'ai une fonction avec n valeurs n étant très grand cela veut dire que je dois créer "2n" textbox ??? ça devient moins intéressant ? ton avis STP ...
A+
Je vais suivre à la lettre tes instructions ce soir (ou cette nuit !)...
- J'utilise VB5 ( depuis peu) car pour sésoudre des petits Pbs (équa diff de la chaleur en éléments finis) et présenter les résultats graphiques et tabeaux l'IHM est pratique.
- Un point important : j'ai cru que tu plaisantais en disant de créer 22 textbox, moi j'en ai crée 1 dans laquelle mes résultats apparaissent ( voir la petite procédure déjà envoyée ) ... Si j'ai une fonction avec n valeurs n étant très grand cela veut dire que je dois créer "2n" textbox ??? ça devient moins intéressant ? ton avis STP ...
A+
Mon avis !! Quand j'essaye d'aider je rigole pas !!!
créer des Textbox c'était pour la démo, mais avec la ligne et demi de renseignement que tu donne au départ c'est difficile de savoir comment faire.
Si tu sais combien de données dans ton tableau tu peu modifier le for dans excel.
Et pour ta 2ém réponse, ce serrait mieux de faire tout dans excel, de plus les graph d'excel sont beaucoups plus performant que ceux de VB
créer des Textbox c'était pour la démo, mais avec la ligne et demi de renseignement que tu donne au départ c'est difficile de savoir comment faire.
Si tu sais combien de données dans ton tableau tu peu modifier le for dans excel.
Et pour ta 2ém réponse, ce serrait mieux de faire tout dans excel, de plus les graph d'excel sont beaucoups plus performant que ceux de VB
RE RE Bonsoir,
- Tu es un peu dur : " mais avec la ligne et demi de renseignement que tu donne " ce n'est pas volontaire: mon exemple de tableau à 2 colonnes donnant 2x 10 valeurs devait pour moi permettre d'étendre à "2 x n" valeurs plus tard. Désolé, je croyais avoir donné l'info suffisante...
- J'ai , je crois , bien saisi ton explication de la méthode utiliseé par Excel pour récupérer l'info de "Temporaire.FFF". J'ai suivi tes conseils ( la 2ième ligne reste " Type ERG1" et non " Private Type ERG1" comme dans VB5 ). Je crée bien ce fichier de 1Ko en lançant VB5.
Quand je vais dans le module 1 de VBA ,si je lance par curseur sur "C"hemin + F5 rien ne se passe , alors que si je passe par "éxécuter", j'obtiens une fenêtre "macro : colleTB " > puis je fais éxécuter ( la macro). Rien ne se passe dans la feuille1 de " classeur1.xls " , mais pas de bug ( c'est déjà quelquechose ).
- En fait je me demande plûtot maintenant si il y a vraiment des données dans le fichier Temporaire.FFF ...Pour tout dire j'ai bien crée 22 textbox mais je ne comprend pas pourquoi : dans ma petite tête quand je greffe sur ton code une petite procédure avec la boucle pour créer les 22 chiffres + TxrCol1(i) = i et TxrCol2(i) = Y(i) je me dis que j'ai bien fourni les valeurs à TxrCol1 & 2 et je peux vérifier dans ma textbox qu'elles ont bien été génèrée ( instruction tableau1 = tableau1.Text & ... Format(i, "00") &...etc. ). Alors à quoi servent les 21 autres box et quel code leur fournir ?? J'ai essayé différentes manip sans succès !
Je comprendrais parfaitement que tu "décroches" mais si tu peux encore m'aider je suis preneur, ça me gonfle vraiment de ne pas y arriver !
de toute façon merci
A+ ( si tu le souhaites )
- Tu es un peu dur : " mais avec la ligne et demi de renseignement que tu donne " ce n'est pas volontaire: mon exemple de tableau à 2 colonnes donnant 2x 10 valeurs devait pour moi permettre d'étendre à "2 x n" valeurs plus tard. Désolé, je croyais avoir donné l'info suffisante...
- J'ai , je crois , bien saisi ton explication de la méthode utiliseé par Excel pour récupérer l'info de "Temporaire.FFF". J'ai suivi tes conseils ( la 2ième ligne reste " Type ERG1" et non " Private Type ERG1" comme dans VB5 ). Je crée bien ce fichier de 1Ko en lançant VB5.
Quand je vais dans le module 1 de VBA ,si je lance par curseur sur "C"hemin + F5 rien ne se passe , alors que si je passe par "éxécuter", j'obtiens une fenêtre "macro : colleTB " > puis je fais éxécuter ( la macro). Rien ne se passe dans la feuille1 de " classeur1.xls " , mais pas de bug ( c'est déjà quelquechose ).
- En fait je me demande plûtot maintenant si il y a vraiment des données dans le fichier Temporaire.FFF ...Pour tout dire j'ai bien crée 22 textbox mais je ne comprend pas pourquoi : dans ma petite tête quand je greffe sur ton code une petite procédure avec la boucle pour créer les 22 chiffres + TxrCol1(i) = i et TxrCol2(i) = Y(i) je me dis que j'ai bien fourni les valeurs à TxrCol1 & 2 et je peux vérifier dans ma textbox qu'elles ont bien été génèrée ( instruction tableau1 = tableau1.Text & ... Format(i, "00") &...etc. ). Alors à quoi servent les 21 autres box et quel code leur fournir ?? J'ai essayé différentes manip sans succès !
Je comprendrais parfaitement que tu "décroches" mais si tu peux encore m'aider je suis preneur, ça me gonfle vraiment de ne pas y arriver !
de toute façon merci
A+ ( si tu le souhaites )
Si rien ne se passe sur excel c'est que tout va bien, mais ça va tellement vite que tu vois rien et si effectivement ton fichier est vide y à rien qui s'inscrit.
Revenons donc à VB5, laisse tomber les textbox et colle ce code
Pour suivre l'évolution tu peu mettre un point d'arrèt par exemple sur la ligne Chemin = ..
mettre un point d'arrèt : soit mettre le curseur sur la ligne et taper F9, soit cliquer sur la partie gauche du cadre de la fenêtre
Un point d'arrèt se matérialise par la ligne en surbrillance Brun.
pour passer d'instruction en instruction taper F8
Pour connaitre ce qu'il y a dans une variable promenner le curseur dessus, une bulle s'inscrit avec sont contenu.(ne va pas toujours)
autre façon pour connaître le contenu, dans la fenêtre Exécution, par exemple pour connaître ce qu'il y a dans Chemin taper Print Chemin et valider par Enter.
Tu dit...
Revenons donc à VB5, laisse tomber les textbox et colle ce code
Option Explicit Private Type ERG1 VarTxt1 As String * 30 VarTxt2 As String * 30 End Type Dim TB(10) As ERG1 Dim temp As String Dim Chemin As String '1Bouton sauver Private Sub Sauver_Click() Dim Fich As Integer, i As Integer Chemin = "C:\VB5" temp = Chemin & "\Temporaire.FFF" Fich = FreeFile Open temp For Random As #Fich Len = Len(TB(0)) For i = 0 To 10 Put #Fich, i + 1, TB(i) Next i End Sub Private Sub Form_Load() Dim i As Integer For i = 0 To 10 TB(i).VarTxt1 = "Tabl1," & i TB(i).VarTxt2 = "Tabl2," & i Next i End Sub
Pour suivre l'évolution tu peu mettre un point d'arrèt par exemple sur la ligne Chemin = ..
mettre un point d'arrèt : soit mettre le curseur sur la ligne et taper F9, soit cliquer sur la partie gauche du cadre de la fenêtre
Un point d'arrèt se matérialise par la ligne en surbrillance Brun.
pour passer d'instruction en instruction taper F8
Pour connaitre ce qu'il y a dans une variable promenner le curseur dessus, une bulle s'inscrit avec sont contenu.(ne va pas toujours)
autre façon pour connaître le contenu, dans la fenêtre Exécution, par exemple pour connaître ce qu'il y a dans Chemin taper Print Chemin et valider par Enter.
Tu dit...
Bonjour,
- Alors là c'est le pied....ça marche et j'ai presque tout compris. Tu dis, avec Gide : "L'expérience instruit plus sûrement que le conseil" d'accord, mais sans ton conseil et ton expérience, je n'aurais (avec ma très modeste expérience) pas réussi du tout..
- J'ai adapté ton code à mon cas : 3 colonnes, une entête au début de chaque colonne ( X, Y(i) , Z(i) ) et dans chaque colonne les valeurs des paramètres. Je pense pouvoir plus tard paramètrer le nombre de valeurs ( i = n ) pour avoir un petit outil dans lequel on ne rentre q'un chiffre pour effectuer un transfert.
Donc ça roule , les valeurs sont bien transfèrées, mais juste un détail , seule une entête de colonne apparait ( x) mais les 2 autres niet.Cependant en cliquant sur les cases B1 et C1, je retrouve le texte voulu... un mystère d'Excel ?
- Encore une fois un grand merci pour ta patience et tes connaissances. Si tu peux me conseiller quelques lectures sur le sujet ( il y en a tellement ) ce sera le dernier conseil demandé...
nota : Je me suis cogné la tête ce matin, il me semble que ça sonnait un peu moins creux sans toutefois savoir si le problème est de mon coté ou du mur...
Disciple de Confucius, je te salue
Dernière version, dans VBA / Excel :
Type ERG1
VarTxt1 As String * 30
VarTxt2 As String * 30
VarTxt3 As String * 30
End Type
Dim TB(12) As ERG1
Dim temp As String
Dim Chemin As String
Sub ColleTB()
Dim Fich As Integer, i As Integer
Chemin = "C:\VB5"
temp = Chemin & "\Temporaire.FFF"
Sheets("Feuil1").Select
Fich = FreeFile
Open temp For Random As #Fich Len = Len(TB(0))
Get #Fich, 1, TB(0)
Cells(1, 1) = TB(0).VarTxt1
Cells(1, 2) = TB(0).VarTxt2
Cells(1, 3) = TB(0).VarTxt3
For i = 1 To 10
Get #Fich, i + 1, TB(i)
Cells(i + 1, 1) = TB(i).VarTxt1
Cells(i + 1, 2) = TB(i).VarTxt2
Cells(i + 1, 3) = TB(i).VarTxt3
Next i
End Sub
Dans VB5 :
Option Explicit
Private Type ERG1
VarTxt1 As String * 30
VarTxt2 As String * 30
VarTxt3 As String * 30
End Type
Dim TB(11) As ERG1
Dim temp As String
Dim Chemin As String
'1Bouton sauver
Private Sub Sauver_Click()
Dim Fich As Integer, i As Integer
Chemin = "C:\VB5"
temp = Chemin & "\Temporaire.FFF"
Fich = FreeFile
Open temp For Random As #Fich Len = Len(TB(0))
For i = 0 To 11
Put #Fich, i + 1, TB(i)
Next i
End Sub
Private Sub Form_Load()
Dim i As Integer
Dim Y(20) As Integer
Dim Z(20) As Integer
Dim A$
A$ = Chr$(13) + Chr$(10)
TB(0).VarTxt1 = "X"
TB(0).VarTxt2 = "Y(i)"
TB(0).VarTxt3 = "Z(i)"
For i = 1 To 11
Y(i) = 10 + i
Z(i) = 20 + i
TB(i).VarTxt1 = i
TB(i).VarTxt2 = Y(i)
TB(i).VarTxt3 = Z(i)
Next i
For i = 1 To 11
tableau = tableau.Text & " " & A$
tableau = tableau.Text & " " & A$
tableau = tableau.Text & " I = " & Format(i, "0") & " " & " Y = " & Format(Y(i), "00.0") & " " & " Z = " & Format(Z(i), "00.0") & A$
Next i
End Sub
- Alors là c'est le pied....ça marche et j'ai presque tout compris. Tu dis, avec Gide : "L'expérience instruit plus sûrement que le conseil" d'accord, mais sans ton conseil et ton expérience, je n'aurais (avec ma très modeste expérience) pas réussi du tout..
- J'ai adapté ton code à mon cas : 3 colonnes, une entête au début de chaque colonne ( X, Y(i) , Z(i) ) et dans chaque colonne les valeurs des paramètres. Je pense pouvoir plus tard paramètrer le nombre de valeurs ( i = n ) pour avoir un petit outil dans lequel on ne rentre q'un chiffre pour effectuer un transfert.
Donc ça roule , les valeurs sont bien transfèrées, mais juste un détail , seule une entête de colonne apparait ( x) mais les 2 autres niet.Cependant en cliquant sur les cases B1 et C1, je retrouve le texte voulu... un mystère d'Excel ?
- Encore une fois un grand merci pour ta patience et tes connaissances. Si tu peux me conseiller quelques lectures sur le sujet ( il y en a tellement ) ce sera le dernier conseil demandé...
nota : Je me suis cogné la tête ce matin, il me semble que ça sonnait un peu moins creux sans toutefois savoir si le problème est de mon coté ou du mur...
Disciple de Confucius, je te salue
Dernière version, dans VBA / Excel :
Type ERG1
VarTxt1 As String * 30
VarTxt2 As String * 30
VarTxt3 As String * 30
End Type
Dim TB(12) As ERG1
Dim temp As String
Dim Chemin As String
Sub ColleTB()
Dim Fich As Integer, i As Integer
Chemin = "C:\VB5"
temp = Chemin & "\Temporaire.FFF"
Sheets("Feuil1").Select
Fich = FreeFile
Open temp For Random As #Fich Len = Len(TB(0))
Get #Fich, 1, TB(0)
Cells(1, 1) = TB(0).VarTxt1
Cells(1, 2) = TB(0).VarTxt2
Cells(1, 3) = TB(0).VarTxt3
For i = 1 To 10
Get #Fich, i + 1, TB(i)
Cells(i + 1, 1) = TB(i).VarTxt1
Cells(i + 1, 2) = TB(i).VarTxt2
Cells(i + 1, 3) = TB(i).VarTxt3
Next i
End Sub
Dans VB5 :
Option Explicit
Private Type ERG1
VarTxt1 As String * 30
VarTxt2 As String * 30
VarTxt3 As String * 30
End Type
Dim TB(11) As ERG1
Dim temp As String
Dim Chemin As String
'1Bouton sauver
Private Sub Sauver_Click()
Dim Fich As Integer, i As Integer
Chemin = "C:\VB5"
temp = Chemin & "\Temporaire.FFF"
Fich = FreeFile
Open temp For Random As #Fich Len = Len(TB(0))
For i = 0 To 11
Put #Fich, i + 1, TB(i)
Next i
End Sub
Private Sub Form_Load()
Dim i As Integer
Dim Y(20) As Integer
Dim Z(20) As Integer
Dim A$
A$ = Chr$(13) + Chr$(10)
TB(0).VarTxt1 = "X"
TB(0).VarTxt2 = "Y(i)"
TB(0).VarTxt3 = "Z(i)"
For i = 1 To 11
Y(i) = 10 + i
Z(i) = 20 + i
TB(i).VarTxt1 = i
TB(i).VarTxt2 = Y(i)
TB(i).VarTxt3 = Z(i)
Next i
For i = 1 To 11
tableau = tableau.Text & " " & A$
tableau = tableau.Text & " " & A$
tableau = tableau.Text & " I = " & Format(i, "0") & " " & " Y = " & Format(Y(i), "00.0") & " " & " Z = " & Format(Z(i), "00.0") & A$
Next i
End Sub
Aller.. Dernière petite aide,
et..
Tu revient quand tu veux,
A+
Dans VB5 For i = 1 To Ubound(TB) 'Va jusqu'a la fin du tableau.
et..
Dans excel For i = 1 To Lof(Fich)/Len(TB(0)) 'Va jusqu'au bout du fichier
Tu revient quand tu veux,
A+
Mais encore...
Remplacer..
par tout simplement...
et tes entêtes de colonnes serront présente.
A++
Remplacer..
Get #Fich, 1, TB(0) Cells(1, 1) = TB(0).VarTxt1 Cells(1, 2) = TB(0).VarTxt2 Cells(1, 3) = TB(0).VarTxt3 For i = 1 To 10 Get #Fich, i + 1, TB(i) Cells(i + 1, 1) = TB(i).VarTxt1 Cells(i + 1, 2) = TB(i).VarTxt2 Cells(i + 1, 3) = TB(i).VarTxt3 Next i
par tout simplement...
For i = 0 To Lof(Fich)/Len(TB(0)) -1 Get #Fich, i + 1, TB(i) Cells(i + 1, 1) = TB(i).VarTxt1 Cells(i + 1, 2) = TB(i).VarTxt2 Cells(i + 1, 3) = TB(i).VarTxt3 Next i
et tes entêtes de colonnes serront présente.
A++
Alors là, je t'arrête. Non ce n'est plus possible, c'est trop la classe, j'ai maintenant un outil super que beaucoup vont m'envier ! A terme Je vais le décortiquer pour en bien comprendre le détail...
Merci encore et passes de bonnes fêtes
A+ Bernard ( mais celle-la, on a dû te la faire souvent, si c'est le cas tu changes avec Thiérry )
Merci encore et passes de bonnes fêtes
A+ Bernard ( mais celle-la, on a dû te la faire souvent, si c'est le cas tu changes avec Thiérry )