Bonjour,
je cherche une macro ou un prog pour implementer un fichier type csv via des tableaux excel càd prendre des valeurs des tableaux et les integrer au fichier csv
merci par avance
Bonjour,
je cherche une macro ou un prog pour implementer un fichier type csv via des tableaux excel càd prendre des valeurs des tableaux et les integrer au fichier csv
merci par avance
Quelle rapport avec .NET:
A mon avis aucun, alors je déplace![]()
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
En tout cas, sur le forum Visual Basic, ça a été donné tellement de fois que j'ai arrêté de compter...![]()
Fais une petite recherche, et tu trouveras ce que tu cherches.
Salut,
La réponse se trouve sur le forum alors ya plus qu'à faire une recherche avancée.
Voilà l'adresse http://www.developpez.net/forums/search.php
Bonne continuation
Théo
Tu adaptes à tes besoins
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Sub CréerFichierInserTxt() Dim i, j, DernièreLigne, DernièreColonne Application.ScreenUpdating = False ActiveSheet.Range("A1").Select Selection.CurrentRegion.Select Set tbl = ActiveCell.CurrentRegion DernièreLigne = tbl.Rows.Count DernièreColonne = tbl.Columns.Count Cells(1, 1).Select Open "p:\InserComplété.txt" For Output As #1 For i = 1 To DernièreLigne For j = 1 To DernièreColonne - 1 Print #1, Cells(i, j).Formula + ";"; Next j Print #1, Cells(i, j + 1).Formula Next i Close #1 End Sub
place un ; comme séparateur etPrint #1, Cells(i, j).Formula + ";";
provoque un saut de ligne en fin de ligne ExcelPrint #1, Cells(i, j + 1).Formula
A+
Bonjour,
J'ai un peu modifié ton code ouskel'n'or
jpleroisse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Sub CréerFichiercsv() Dim i, j, DernièreDansLigne, DernièreDansColonne Dim tbl Application.ScreenUpdating = False ActiveSheet.Range("A1").Select Selection.CurrentRegion.Select Set tbl = ActiveCell.CurrentRegion DernièreDansLigne = tbl.Rows.Count DernièreDansColonne = tbl.Columns.Count Cells(1, 1).Select Open "C:\MonFichier.csv" For Output As #1 For i = 1 To DernièreDansLigne For j = 1 To DernièreDansColonne Print #1, Cells(i, j).Formula & ","; Next j Print #1, Cells(i, j + 1).Formula Next i Close #1 Application.ScreenUpdating = True End Sub
Hello, leroissejp
Tu as tous les droits...
Mais si j'avais à modifier mon code aujourd'hui, j'utiliserais une autre syntaxe pour déterminer la dernière colonne ou la dernière ligne... parce que s'il y a des colonnes ou des lignes vides dans la feuille Excel, avec ce code, on est marron.
à la place de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DernièreLigne = Range("A65535").End(xlUp).Row DernièreColonne = Cells(1, 1).SpecialCells(xlCellTypeBlanks).Column - 1
Pas toi ?ActiveSheet.Range("A1").Select
Selection.CurrentRegion.Select
Set tbl = ActiveCell.CurrentRegion
DernièreDansLigne = tbl.Rows.Count
DernièreDansColonne = tbl.Columns.Count
A+
Bonsoir,
D'accord avec toi ouskel'n'or.
jpleroisse
Salut leroissejp,
Tu as vu une réponse de redzorro, toi ?![]()
Qu'est-ce qu'on fait ? On lui envoie un mp pour lui dire qu'on a répondu ?![]()
Salut,Envoyé par ouskel'n'or
Je ne pense pas qu'il répondra ...
Il a du trouver une solution et il ne le dit pas comme d'hab (cf ton sondage ouskel'n'or)
+
Théo
Non, parce que s'il a fait ce que j'ai mis, il y a une erreur... là :
DernièreColonne = Cells(1, 1).SpecialCells(xlCellTypeBlanks).Column - 1![]()
Non, en fait il n'y a pas d'erreur dans la rédaction du code lui-même, mais comme ça, et quand on sait ce qu'on veut, ça donne pas ce qu'on veut...![]()
Mais rassure-toi, j'ai corrigé mon code.![]()
Ça t'intéresse ?![]()
A+
Allez, poste toujours.
Ça ne fait jamais de mal de voir un bout de code bien écrit.![]()
Et comme ça, si Redzero réussit à se rappeler l'adresse du forum sur lequel il a posé la question, et qu'il revient jeter un coup d'oeil à la solution, il sera content...![]()
Il faut d'abord que je précise l'objet de ma réflexion...![]()
J'ai supposé une feuille de calcul pouvant posséder des colonnes vides. Malheureusement, ça existe aussi...
Donc au lieu de mettre
Tu dois sélectionner toutes les cellulesDernièreColonne = Cells(1, 1).SpecialCells(xlCellTypeBlanks).Column - 1
et ce n'est qu'ensuite que tu peux écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cells.Select
Si tu ne sélectionnes pas, ça marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part DernièreColonne = Selection.SpecialCells(xlCellTypeLastCell).Column
Mais tu devrais aussi pouvoir mettre
... enfin, je pense...
Code : Sélectionner tout - Visualiser dans une fenêtre à part DernièreColonne = Range(Cells(1, 1), Cells(65535, 256)).SpecialCells(xlCellTypeLastCell).Column![]()
Maintenant, pour la dernière ligne, c'est pareil ! Il y a une erreur là :
DernièreLigne = Range("A65535").End(xlUp).Row![]()
Ça t'intéresse aussi ?
Ah ! Je me disais bien...
Là, je n'ai rien trouvé qui puisse me donner la dernière ligne si un ligne plus une colonne, ou plusieurs lignes et/ou plusieurs colonnes étaient vides...![]()
Alors j'ai réfléchi et me suis dit : Il existe peut-être une solution mais... je ne la connais pas !
Donc, à la place dequi ne marche pas, j'ai fait ça :DernièreLigne = Range("A65535").End(xlUp).Row
Au delà de 10 lignes successives également vides, ça marche plus. Il faut changer "Marge"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Marge = 10 For i = 1 To 256 For j = 1 To 65535 If Range(Cells(j, i), Cells(65535, i)).End(xlUp).Row > DernièreLigne Then DernièreLigne = Range(Cells(j, i), Cells(65535, i)).End(xlUp).Row End If If j > DernièreLigne + Marge Then Exit For Next j Next i
Et là ça marche. seulement là, faut pas oublier de déclarer Marge !![]()
Si tu as une autre solution, je suis preneur. Et puis comme ça, redzero aura une meilleure réponse aux questions qu'on se pose...![]()
Salut salut,
Moi, pour obtenir la dernière ligne et la dernière colonne d'un fichier excel, qui peut contenir de lignes et de colonnes vides, je fait :
Si ça vous interesse, j'ai un petit programme qui transforme un fichier xls en csv en prenant en paramètre les chemin des fichiers xls et csv...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 derniere_ligne = ActiveCell.SpecialCells(xlLastCell).Row derniere_colonne = ActiveCell.SpecialCells(xlLastCell).Column
Bizarrement, le
ne "marche" pas toujours. Une fois sur deux, il m'indique une cellule vide. Bon, c'est toujours un majorant, ce qui suffit en général, mais j'avoue que je n'ai jamais trop su pourquoi il faisait ça, et en général, je ne m'en sers pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SpecialCells(xlLastCell)
Non, désolé...
ne marche pas si la colonne sélectionnée n'est pas celle où le nombre de lignes renseignées est le plus élevéderniere_ligne = ActiveCell.SpecialCells(xlLastCell).Row
et
Ne marche pas si la ligne sélectionnée n'est pas celle possédant le plus grand nombre de colonnes renseignéesderniere_colonne = ActiveCell.SpecialCells(xlLastCell).Column
Mon hypothèse de départ était que dans la plage de données il y avait des colonnes ou des lignes complètement VIDES
Faut lire !![]()
Pour les colonnes, c'est réglé
Restent les lignes
Mais attendons Bbill ou AlainTech ou Théo ou jp ou... tout autre érudit en la matière...![]()
A+
Partager