DAMIEN001
Messages postés19Date d'inscriptionmercredi 25 août 2010StatutMembreDernière intervention 6 octobre 2010
-
16 sept. 2010 à 11:48
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
16 sept. 2010 à 18:17
bonjour,
J'ai un classeur sur lequel je veux faire le remplissage de manière automatique des feuilles de ce classeur. Voici le code que j'ai ecris:
Sub remplissage()
Dim g As Range
Dim i As Integer, j As Integer
Dim ws As Worksheet
Cells(3, 1) = Now
Cells(3, 9) = Now
For j = 2 To 12
For i = 7 To 37
For Each ws In ThisWorkbook.Worksheets("TS SAUVEGARDE10")
Set g = ws.Cells(9, 6)
g.Copy ThisWorkbook.Worksheets("SUIVI MENSUEL").Cells(i, j)
Application.OnTime Now + TimeValue("00:00:05"), "generer"
Next ws
Next i
Next j
' a faire a la fin
End Sub
Mais lorsque je complile , le message suivant s'affiche:<< Erreur d'execution '438'
Propriété ou methode non gérée par l'objet >>
pouquoi ce message et s'il vous plaît ,si possible,donnez moi un autre moyen ou faites une corection à mon code .
Merci de votre bonne comprehension.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 16 sept. 2010 à 12:33
Salut
La prochaine fois que tu colles du code, utilise la coloration syntaxique 3ème icone à droite plus facile à lire. Merci
Quand tu as une erreur, précise sur quelle ligne elle apparait.
Beaucoup de choses à revoir.
On ne sait pas ce que tu veux faire, donc difficile de te savoir comment corriger.
Quand tu utilises Cells ou Range pour en extraire le contenu ou écrire dedans, précise toujours .Value : d'une part cela facilitera la relecture et d'autre part cela facilitera la vie du compilateur (et évitera certains bugs).
For Each ws In ThisWorkbook.Worksheets("TS SAUVEGARDE10")
est incohérent avec la déclaration de 'ws'
'ws' est une feuille.
Si tu dois parcourir toutes les feuilles de ton classeur, ne précise pas le nom de la feuille :
For Each ws In ThisWorkbook.Worksheets
Si tu dois énumérer les cellules des colonnes 2 à 12 et lignes 7 à 37 (ou l'inverse), mieux vaudrait travailler avec les Range que d'utiliser des boucles For-Next.
Vala
Jack, =fr MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
DAMIEN001
Messages postés19Date d'inscriptionmercredi 25 août 2010StatutMembreDernière intervention 6 octobre 2010 16 sept. 2010 à 13:06
Bonjour Jack,
Meci de votre reponse. Au fait ce que je veux faire est la suivante:
-J'ai un classeur où j'ai crée 3 feuilles.
-toutes ces feuilles contiènnent des tableaux differants
-Il y a une feuille dans ce dernier que je veux générer tous les jours à la même heure (07:00:00),mais il doit être la copie extat de la feuille originaire sans les modifications apportées à l'original
-Ensuite je voudrais copier la cellule F9 ( des feuilles générer) vers une autre feuille ( qui contient un tableau mais avec plusieurs cellules [B7:M37])
-Lier la cellule d'arrivée à la cellule de depart par un lien hyper-text et ainsi de suite
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 16 sept. 2010 à 14:18
Ah, voilà des éclaircissements.
-J'ai un classeur où j'ai crée 3 feuilles. Ok - dis nous comment elles s'appellent, car dans les explications qui suivent, on ne sait jamais de quelle feuille tu parles
-toutes ces feuilles contiènnent des tableaux differants Ok
-Il y a une feuille dans ce dernier classeur ? pour l'instant, tu ne parles que d'un seul classeur
que je veux générer tous les jours à la même heure (07:00:00),mais il doit être la copie extat exacte de la feuille originaire originale sans les modifications apportées à l'original
Dans ce cas, pourquoi prends-tu la feuille modifiée ?
Pourquoi ne pas stocker une feuille qu'on appellerait "Originale" avec les cellules qu'il te faut + rendre cette feuille invisible à l'utilisateur.
Par programme, il devient alors simple de recopier l'original dans la feuille de travail.
-Ensuite je voudrais copier la cellule F9 ( des feuilles générer)
générées par quoi ?
vers une autre feuille ( qui contient un tableau mais avec plusieurs cellules [B7:M37]) Ok - pour faire ça, il te suffit d'enregistrer une macro pendant que tu fais la manip à la main
-Lier la cellule d'arrivée à la cellule de depart par un lien hyper-text et ainsi de suite Là aussi, si tu enregistres une macro pendant que tu le fais à la main, tu auras le code nécessaire, il te suffira ensuite d'appliquer ce code à toutes les cellules que tu souhaites, avec une simple boucle For-Next
DAMIEN001
Messages postés19Date d'inscriptionmercredi 25 août 2010StatutMembreDernière intervention 6 octobre 2010 16 sept. 2010 à 16:49
bonsoir ,
s'il vous plaît je n'arrive pas toujour à écrire la macros qui me pemettra de copier une cellule ("f9") de la feuille copié ("originale") vers une autre feuille qui contient les cellules (B7:M37), à chaque fois que la feuille est générée.
Pouvez-vous me donner un script qui me permettra de resoudre se problème?
DAMIEN001
Messages postés19Date d'inscriptionmercredi 25 août 2010StatutMembreDernière intervention 6 octobre 2010 16 sept. 2010 à 17:13
bonjour ,
j'ai ecris un code qui me permet de copier un cellule vers une autre cellule (une autre feuille du même clesseur). Voici le code:
Sub remplissage()
Dim g As Range
With ThisWorkbook.Worksheets("TS SAUVEGARDE10")
Set g = ThisWorkbook.Worksheets("TS SAUVEGARDE10") .Range("F$9")
g.Copy ThisWorkbook.Worksheets("SUIVI MENSUEL").Range("B7")
End With
End Sub
Il marche pour un cas .Comment faire pour( sachant que la feuille "TS SAUVEGARDE10" est dupliqué à un moment de la journée)les cellules de de la feuille "SUIVI MENSUEL"puissent avoir les même valeurs que les cellules (F9) des feuilles"TS SAUVEGARDE10"?
Quel code ecrire?
Merci
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 16 sept. 2010 à 18:17
Puisque tes cellules sont toujours les mêmes, pourquoi n'enregistres-tu pas une macro pendant que tu le fait à la main ?
Tu auras le code tout prêt.
Quelle est ta difficulté ?