- [VBA] - Variable Tableau de dates a enregistrer dans un .txt = grosse galere

hOAxB

XLDnaute Nouveau
Bonjour a tous,

Je suis coince au boulot. Je suis entrain de creer un tableau pour aider un collegue a s'organiser.
Pour cela, j'enregistre la date du jour quand il double-click sur une cellule (ex: "envoyer demande"). Si il n'a pas cliquer sur la cellule suivante (ex: "recu reponse demande") au bout de quelques jours, DING la case devient rouge.

Pour cela, j'utilise differentes boucle for et deux tableaux de variables, position et dates.

Super, tout marche (alors que j'avais jamais programmer en VBA de ma vie) tant que je ne ferme pas le classeur. Si je ferme le classeur, mes variables se reinitialise.
J'ai cherche et apparement il faudrait que j'enregistre les variables dans une base de donnees externes ou un fichier txt.

En fouinant dans le forum, j'ai trouve quelques exemples et j'ai essaye ca, sans reussite:

Code:
For counter4 = 1 To 1000

Open "C:\Documents and Settings\StockManagement\My Documents\Kingkeo follow up\init.txt" For Output As 1
Print #(counter4), Tableaupos(counter4) & Tableaudate(counter4)
Close

Next counter4

Note: J'ai une erreur 52 a la ligne 5 (Print ...) Bad File name or number.


Ma question est alors simple:

Comment conserver une variable tableau de type date pour la reutiliser "telle quelle"?


Merci pour votre aide et pour votre temps. C'est dur pour moi. "Bobo a la tete"
 
Dernière édition:
G

Guest

Guest
Re : - [VBA] - Variable Tableau de dates a enregistrer dans un .txt = grosse galere

Bonjour,

Il n'est pas necessairement utile de conserver des données dans un fichier texte, qui risquerait de ne pas suivre le fichier si celui-ci déménage.

En sauvegardant dans une feuille cachée (qui pourrait se nommer 'variables') cela serait plus rapide en lecture et ecriture.

Code:
'Ecriture
Sheets("Variables").range("A1:A1000")= application.Transpose(Tableaupos())
Sheets("Variables").range("B1:B1000")=Application.Transpose(Tableaudates())
'Lecture:
TableauPos=Sheets("Variables").Range("A1:A1000").Value
TableauDates=Sheets("Variables").Range("B1:B1000").Value

A+
 

Efgé

XLDnaute Barbatruc
Re : - [VBA] - Variable Tableau de dates a enregistrer dans un .txt = grosse galere

Bonjour hOAxB et bienvenu sur le forum,
Juste une idée pour aller au plus simple:
Pourquoi ne pas coller ton tableau sur une feuille cachée. A l'ouverture tu va chercher les données sur la feuille.
Si tu as peur des manipulations de cette feuille par les utilisateurs tu peux la masquer totalement par macro: Sheets("Cache").Visible = xlVeryHidden. On ne pourra plus l'afficher que par macro.
Cordialement

EDIT Bonjour Hasco
 

hOAxB

XLDnaute Nouveau
Re : - [VBA] - Variable Tableau de dates a enregistrer dans un .txt = grosse galere

Vous etes geniaux! Hasco, merci pour les lignes de code adaptees a mon projet et magistralement completees par la manip' de Elge pour cacher une feuille.
J'essaye ca des que je peux!

Merci les amis, j'ai rarement ete aussi bien aiguille sur un forum informatique.
 
G

Guest

Guest
Re : - [VBA] - Variable Tableau de dates a enregistrer dans un .txt = grosse galere

Re,

Pour la lecture du tableau:
Code:
TableauDates=Sheets("Variables").Range("B1:B1000").Value
Reverra un tableau à deux dimensions
La première avec l'index de ligne du tableau et l'autre l'index de colonne

La première date sera dans TableauDates(1,1)
La deuxième date: TableauDates(2,1)
D'ailleurs pour l'écriture du n'as pas forcément besoin de deux tableaux.
Faut voir....

A+
 

hOAxB

XLDnaute Nouveau
Re : - [VBA] - Variable Tableau de dates a enregistrer dans un .txt = grosse galere

Hasco, ta ligne de lecture renvoie une erreur de compilation. Impossible d'assigner la lecture d'une range a un tableau.
Comment faire alors? Faire une boucle de lecture peut-etre? Je vais essayer des que j'ai un peu de temps libre.
 
G

Guest

Guest
Re : - [VBA] - Variable Tableau de dates a enregistrer dans un .txt = grosse galere

Bonjour,

Déclare ta variable qui recevra le tableau comme Variant et sans parenthèse:
Code:
Dim TableauDates as variant.
TableauDates=Sheets("Variables").Range("B1:B1000").Value

A+
 

hOAxB

XLDnaute Nouveau
Re : - [VBA] - Variable Tableau de dates a enregistrer dans un .txt = grosse galere

Bonjour,

Merci Hasco mais en "detypant" ma variable Tableaudate, je ne peux plus l'utiliser avec ma fonction DateDiff plus tard dans le script.

Je suis entrain d'essayer de transvaser les variables contenues dans mon Tableaudate "variant" vers un autre tableau type Date pour l'utiliser avec ma fonction Datediff mais rien y fait. J'ai une erreur lorsque j'ecris:

Dim Tableaudate As Variant
Dim Tableaudatetype() As Date

Tableaudatetype() = Tableaudate

BaM!

Script Out of Range Error 9

En fin de compte, c'est pas si facile de programmer en VBA.. J'ai eu de la chance que tout se passe bien jusqu'a present.



EDIT:

Je m'en suis sorti comme ca:

Code:
Sub Loaddate()

For counter5 = 1 To 1000

Tableaupos(counter5) = Sheets("Variables").Range("A" & counter5 - 1).Value
Tableaudate(counter5) = Sheets("Variables").Range("B" & counter5).Value

Next counter5



End Sub

J'ai encore une erreur de decalage de ligne donc je fais - 1 a la lecture pour la position (je ne serai pas l'expliquer).

Merci a vous deux en tout cas.
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : - [VBA] - Variable Tableau de dates a enregistrer dans un .txt = grosse galere

Bonjour hOAxB, Bonjour Hasco, le fil, le forum
Je pense que le quiproquos des tableaux viens d'une faute de frappe.
Pour avoir toutes tes données dans un seul tableau à deux dimentions tu peux utiliser ceci:
VB:
Dim TableauDates()
TableauDates = Sheets("Variables").Range("A1:B1000").Value
et là tu auras ton tableau Tableaupos en TableauDates(1, 1) et ton Tableaudate en TableauDates(1, 2) sans aucun décalage.
Cordialement

EDIT: Après tests (sous 2003), il s'avère que la date renvoyée en TableauDates(1, 2) est bien égale à la veille de la date attendue.... :confused:.
Si quelqu'un a une idée sur cet état de fait...
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 158
Messages
2 085 829
Membres
102 994
dernier inscrit
snoopy70