Macro : résultat en csv (12000000 de lignes)

Bonsoir,

Je travaille en ce moment sur un projet de bio informatique. Pour pourvoir utiliser un logiciel de classification des génome et de leur protéines, j'ai besoin d'avoir mon fichier de sortie sous forme CSV.

Tout d'abord, j'ai 1 fichier CSV contenant 3511 nom de génome. (par exemple gen1,gen2 ...).

Mon fichier de sortie doit donc être un fichier csv sous forme de 2 colonnes tel qu'on est toutes les paires possibles

Je prends un exemple avec 3 génomes: au départ on a gen1, gen2 et gen3. mon fichier de sortie est

gen1,gen2;

gen1,gen3;

gen2,gen3

gen2,gen1;

gen3,gen1;

gen3,gen1;

Il s'agit d'un "format classique CSV".

J'ai réalisé sous excel, une macro qui fabrique cette liste sous forme d'un tableau excel sous 2 colonnes (que j'aurais ensuite transformé en CSV). Cependant mon problème est que le nombre de ligne dont j'ai besoin (3511*3510=12 millions et des brouettes) est largement supérieur à ce qu'Excel peut donner.

Il me faudrait donc faire la macro tel que mon résultat soit un fichier CSV. il suffit qu'il existe. je n'ai pas besoin de l'ouvrir pour utiliser le logiciel de classification.

Je vous précise que je ai seulement 1h/2h de VBA.

Voici ma macro (qui fonctionnent tant que la capacité d'Excel le permet : cad pour 100<total<200 <<3511)

Sub Test()
 'Déclaration des variables

Dim x As Integer, nom As String, j As Integer, i As Integer, versus As String, total As Integer

total = 10 'nombre total de plasmids 3511
i = 1
j = 1

For x = 1 To total

nom = Cells(x, 1)
 Range(Cells(i, 3), Cells(i + total - 2, 3)).Value = nom
 i = i + total - 1
        For k = 1 To total
            versus = Cells(k, 1)

                If k <> x Then
                 Cells(j, 4).Value = versus
                 j = j + 1
                 Else
                j = j
                 End If
        Next

Next

End Sub

Est ce qu'il serait possible d'avoir le code/de l'aide pour obtenir le fichier de sortie que je cherche ?

Merci d'avance.

Bonne soirée

Bonne soirée à tous.

Bonjour,

Cette macro devrait faire l'affaire :

Sub Test()
Dim Plage As Object, oL As Object, oC As Object, Tmp$, Sep$, i&
Sep = ";"
i = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
Set Plage = ActiveSheet.Range("A1:B" & i
Open "NomFich.csv" For Output As #1
For Each oL In Plage.Rows
Tmp = ""
For Each oC In oL.Cells
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Print #1, Tmp
Next
Close
End Sub

Cette macro enregistre les colonnes A et B de la feuille active dans un fichier nommé "NomFich.csv"

A+

Merci, mais mon problème n'est toujours pas résolu. Votre programme permet de transformer directement les colonnes désirés en fichier csv. cependant, à partir de total=200, mon programme s'arrête. j'ai un message d'erreur : erreur d’exécution, dépassement de capacité.

Pour résoudre mon problème, il faudrait à mon avis écrire directement dans le fichier csv créé et non pas passer par une écriture intermédiaire dans le tableau excel (qui est impossible contenu de la taille du tableau en sortie).

J'ai essayé d'introduire votre code à l'intérieur de mon code mais ça ne fonctionne pas.

Merci

Bonsoir

Je n'ai pas travaillé dans le même sens

A voir

Banzai 64, votre programme est parfait . Merci.

NB : J'ai réussi à ouvrir le fichier de sortie et ses 12 millions de ligne avec NotePad++ !

Rechercher des sujets similaires à "macro resultat csv 12000000 lignes"