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