projet "import/export" csv

  • Initiateur de la discussion Initiateur de la discussion Shock
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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... 🙂
 
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
 
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
 
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...
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 CSV en EXCEL
Réponses
1
Affichages
96
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Retour