Simplifier une macro sous Excel 2007

Résolu/Fermé
thinico Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 1 avril 2009 - 17 févr. 2009 à 13:59
thinico Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 1 avril 2009 - 17 févr. 2009 à 16:25
Bonjour,
J'ai réalisé une macro pour reporter des données journalières de 4 colonnes différentes dans un tableau mensuel mais mon code est trop long.
Est-il possible de simplifier la macro créée pour alléger le code et la rendre exécutable ?

Voici le code (109 ligne de code) pour une colonne à reporter :

Sub taches()
'
' taches Macro
'
' Touche de raccourci du clavier: Ctrl+w
'
Worksheets("01_2009").Cells(3, 256).End(xlToLeft).Offset(0, 1).Value = Worksheets("Compteur_journalier").Range("x3").Value
(...)
Worksheets("01_2009").Cells(99, 256).End(xlToLeft).Offset(0, 1).Value = Worksheets("Compteur_journalier").Range("x99").Value

['Compteur_journalier'!$c$3:$w$99].ClearContents

ActiveWorkbook.Save

End Sub


Débutant en VBA, je n'ai pas trouvé de solution en m'inspirant des différents site web sur Excel.
Je creuse la question, mais pour l'instant je n'ai pas fais surface ;-)
Alors, merci pour toute aide.
Bien à vous,
Thinico

Windows XP pro
Excel 2007
IE 7
A voir également:

6 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
17 févr. 2009 à 14:04
Bonjour,
Suivant tes explicattions, pas simple à comprendre. Tu peu mettre un exemple de ton classeur sur Cjoint.com ?
A+
0
thinico Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 1 avril 2009 7
17 févr. 2009 à 14:16
Re bonjour,

Voici le lien vers le fichier excel que j'ai réalisé avec le code VBA.

https://www.cjoint.com/?ctooanUTcY

Merci de ton intérêt et de ton aide.

Thinico
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191 > thinico Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 1 avril 2009
17 févr. 2009 à 14:18
Ah wouiii, le lien ?? il est où ? :-)
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
17 févr. 2009 à 14:28
:) Entretemps tu a ajouter le lien
Je comprend que tu veux copier les colonnes de C à W de la feuille Compteur_journalier sur la 01_2009
Mais je ne comprend pas sur quel colonne de la feuille 2009 il faut coller ou suivant quel critères.
Explique !
A+
0
thinico Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 1 avril 2009 7
17 févr. 2009 à 14:45
Re,
En fait, dans la feuille 'Compteur_journalier', ce sont les colonnes "Total" que je souhaite copier dans le tableau de la feuille '01-2009'.
Avec une seule colonne à copier 'Total C' de 'Compteur_journalier' dans 'C' de '01_2009', pas de pb, la macro fonctionne (même si elle est loin d'être parfaite) : j'ai utilisé le principe de la cellule sensible pour pouvoir copier les données de chaque jour au fur et à mesure dans un tableau mensuel.
Mais récemment, j'ai ajouté des lignes de code supplémentaires pour pouvoir copier de nouvelle colonnes créées.
'Total R', Total IM et Total IA de 'Compteur_journalier' respectivement dans 'R', 'IM' et 'IA' de '01_2009.

Désolé pour le manque d'explication, j'espère avoir comblé les lacunes de mon post !?

Merci pour ta patience.

Thinico
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
17 févr. 2009 à 15:03
Pas de problème...
Je reprend,
Tu veux copier 4 colonnes totaux de la feuille jour dans le feuille 2009 en fonction du N° du jour ?
Est-ce le jour actuel ? si non, quel date à prendre en compte.
Si tu avais laisser la macro cela aurait été plus simple.
0
thinico Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 1 avril 2009 7
17 févr. 2009 à 15:24
En fait, je rempli le tableau journalier manuellement à la fin de ma journée ou le lendemain (en principe)... puis avec le raccourci clavier 'Ctrl+w' les totaux sont copiés dans le tableau mensuel de '01_2009' et les données du tableau journalier sont éffacées pour permettre de remplir les données pour le jour suivant.
Manipulation à répéter tous les jours en principe : les données suivantes étant copiées dans les cellules vides du tableau mensuel.
Si j'utilise 'Ctrl+w' sans avoir rempli le tableau journalier, cela copie des valeurs nulles dans le tableau mensuel (pour le dimanche par exemple)... etc.

Normalement, le code y était (dans un module), mais en vérifiant, avec Cjoint il faut passer par google Documents pour lire le fichier et on n'a pas accès au code VBA.
Ci-joint le code complet, à l'adresse suivante : https://www.cjoint.com/?ctplbfrm77

Ci joint le fichier Excel en utlisant un autre service : https://www.mediafire.com/?sharekey=d3a12de3c6e849ee5a3d773badf21430e04e75f6e8ebb871

Thinico
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
17 févr. 2009 à 15:30
OK, Compris
Tu va être étonner !!
Je fait ta macros et te la passe dans un petit moment.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
17 févr. 2009 à 15:43
Essaye..
Sub taches()
Dim FL1 As Worksheet
Dim FL2 As Worksheet
Dim DerCol As Long, Lig As Long, Col As Integer
    Set FL1 = Sheets("Compteur_journalier")
    Set FL2 = Sheets("01_2009")
    DerCol = FL2.Cells(3, 256).End(xlToLeft).Column + 1
    For Lig = 3 To 99
        For Col = 0 To 3
            FL2.Cells(Lig, Col + DerCol) = FL1.Cells(Lig, Col + 24)
        Next Col
    Next Lig
End Sub

J'ai pas vraiment tester mais ce devrait-être bon.
Tu dis...
0
thinico Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 1 avril 2009 7
17 févr. 2009 à 15:56
En exécutant la macro que tu m'as envoyé, le débogueur m'affiche le message suivant

Erreur d'exécution '9' : l'indice n'appartient pas à la sélection

En activant le débogueur, celui-ci surligne en jaune la ligne de commande

Set FL1 = Sheets("Compteur_journalier")
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
17 févr. 2009 à 16:06
Il y a un bug avec le nom que tu a donné à la feuille. (probablement le souligner)
Renomme la "journalier" Attention, pas d'espace complémentaire
et tu change la ligne
Set FL1 = Sheets("journalier")
J'ai tester ça et c'est bon.
0
thinico Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 1 avril 2009 7
17 févr. 2009 à 16:25
Merci beaucoup,
Ca fonctionne très bien !
Il ne me reste plus qu'à comprendre le code que tu m'as envoyé pour pouvoir aller plus loin dans mon apprentissage.
Encore merci et au plaisir,
Bonne fin de journée.
@+

Thinico
0