projet "import/export" csv

Shock

XLDnaute Occasionnel
Bonjour @ tous,

Voilà, j'ai fait un petit bout de code permettant de récupérer les données des cellules non protégées d'1 classeur dans 1 fichier csv.
Et j'aurais voulu avoir la possibilité de faire, par macro bien sûr, la manip en sens inverse. Je m'explique :
J'ai dans ce fichier csv les adresses et valeurs de chaque cellule, séparées par tabulations, que je voudrais pouvoir réintégrer dans mon classeur en lieu et place (un système de sauvegarde plus ou moins, qu'on pourrait restaurer ensuite).

Ci-dessous le code "d'exportation" :
Code:
Private Cellule As Range


Sub cellules_modifiables()
Dim projet As String, ThePath

ThePath = "C:\Documents and Settings\utilisateur\Mes documents\fichier.csv"

For i = 1 To Sheets.Count

For Each Cellule In ThisWorkbook.Sheets(i).Range("A1:BA500")

With Cellule
    If .Locked = False Then
fichier = Sheets(i).Name & vbTab & .Address & vbTab & .Cells(1, 1)
Open ThePath For Append As #1
Print #1, fichier
Close
    End If
End With

Next Cellule
Next i

End Sub

PS : Ce code est LARGEMENT inspiré de ce forum... :)
 

lapix

XLDnaute Occasionnel
Re : projet "import/export" csv

salut

J'ai repris ton code et ajouté une procedure de restore
Dis moi si ca te convient


Private Cellule As Range

Sub cellules_modifiables()
Dim projet As String, ThePath

ThePath = "C:\fichier.csv"

Open ThePath For Append As #1

For i = 1 To Sheets.Count
For Each Cellule In ThisWorkbook.Sheets(i).Range("A1:E15")
With Cellule
If .Locked = False Then
fichier = Sheets(i).Name & vbTab & .Address & vbTab & .Cells(1, 1)
Print #1, fichier
End If
End With
Next Cellule
Next i

Close #1

End Sub

Sub restaure()
Dim Ligne As Variant
ThePath = "C:\fichier.csv"
Open ThePath For Input As #1

Do While Not EOF(1)
Line Input #1, Ligne
Ligne = Split(Ligne, vbTab)
Sheets(Ligne(0)).Range(Ligne(1)).Value = Ligne(2)
Loop

End Sub
 

Shock

XLDnaute Occasionnel
Re : projet "import/export" csv

Salut @ tous! :)

Bon,

merci beaucoup Lapix pour ce code bien pratique!! Ca marche super bien.
J'ai par contre un petit souci...mais c'est au niveau de mon code :
Dans certaines cellules non protégées, j'ai des valeurs VRAI et FAUX qui dépendent de cases à cocher. Mais quand je les récupère dans mon .csv, la casse n'est pas la même : j'obtiens "Vrai" au lieu de "VRAI"...ce qui fait qu'en faisant "restaure", mes cellules se remplissent bien, mais mes cases à cocher non. Quelqu'un aurait-il une idée?

Merci beaucoup en tout cas!
ShocK
 

Shock

XLDnaute Occasionnel
Re : projet "import/export" csv

Salut,

Merci mais en fait, ca a marché une fois, puis plus du tout!!

J'ai un souci plus gênant encore :
Toutes les cellules contenant des formules renvoient des valeurs qui parfois dépassent 2 chiffres après la virgule, et dans ce cas, le "restaure" me rappatrie les valeurs en ne tenant pas compte de la virgule. Ex : 14.0716 donne 140716.00.
Peut-on récupérer carrément la formule contenue? ou au pire, arrondir à 2 chiffres après la virgule, car je n'ai de toute façon pas besoin d'autant de précision.

Merci beaucoup!

PS : j'ai essayé d'enregistrer avec cette ligne :
Code:
fichier = Sheets(i).Name & vbTab & .Address & vbTab & .Formula
Mais ca ne fonctionne pas...
 

lapix

XLDnaute Occasionnel
Re : projet "import/export" csv

je te mets joint les fichiers que j'ai testé

Tout fonctionne (j'ai fait mis en remarque le 'locked=false'
et la boucle sur les feuilles


Shock à dit:
Salut,

Merci mais en fait, ca a marché une fois, puis plus du tout!!

J'ai un souci plus gênant encore :
Toutes les cellules contenant des formules renvoient des valeurs qui parfois dépassent 2 chiffres après la virgule, et dans ce cas, le "restaure" me rappatrie les valeurs en ne tenant pas compte de la virgule. Ex : 14.0716 donne 140716.00.
Peut-on récupérer carrément la formule contenue? ou au pire, arrondir à 2 chiffres après la virgule, car je n'ai de toute façon pas besoin d'autant de précision.

Merci beaucoup!

PS : j'ai essayé d'enregistrer avec cette ligne :
Code:
fichier = Sheets(i).Name & vbTab & .Address & vbTab & .Formula
Mais ca ne fonctionne pas...
 

Pièces jointes

  • Export-import.zip
    9.1 KB · Affichages: 71

Shock

XLDnaute Occasionnel
Re : projet "import/export" csv

Salut LapiX,

MERCI BEAUCOUP!! Ca marche bien, j'avais le bon code, mais grâce à ton fichier, je me suis aperçu de pb sur certaines cellules masquées mais non verrouillées, puis sur une listbox dans une feuille...
j'ai solutionné le tout en rajoutant un Sheets(i).unprotect
puis un sheets(i).protect en début et fin de boucle...et tout va bien.

Merci encore, j'espère pouvoir te rendre la pareille!! ;)
ShocK
 

Discussions similaires

Réponses
12
Affichages
627
Réponses
6
Affichages
355