Adresse d'une série de cellules
Bonjour à tous,
Je me met doucement aux macro.
Pour la gestion de mes chantiers, j'ai crée un classeur de gestion.
Ce classeur comporte une feuille récap et autant de feuille que de semaine passé sur le chantier.
J'ai réussi à faire une macro pour dupliqué une feuille maquette et lui attribué automatiquement le nom de la semaine suivante.
Mon souci est le suivant:
comment inclure dans cette macro la ligne récapitulative correspondante, en sachant que chaque feuille a un nom différent, mais que la nouvelle feuille créer est automatiquement en position 5.
Je sais pas si j'ai été assez clair.
Merci d'avance pour votre aide.
Bonjour Dohvakiin,
Worksheets(5) est toujours la 5ème feuille du classeur ; ça échouera bien sûr pour un classeur
de moins de 5 feuilles, car dans ces cas, la 5ème feuille n'existe tout simplement pas. ;)
Cordialement
Merci beaucoup,
J'ai fait ca moi
Sub Duplication()
'
' Duplication Macro
' Copie et renomme les feuille au fur et a mesure des semaines
'
' Touche de raccourci du clavier: Ctrl+Shift+D
'
Sheets(4).Select
'copie de la feuille n4 en position 1
Sheets(4).Copy Before:=Sheets(1)
Sheets(1).Select
'Deplacement de la feuille en position 4
Sheets(1).Move After:=Sheets(4)
'Incrémentation des semaine
[AG1] = [AG1] + 1
'Renommer la feuille en fonction du numéro de la semaine
ActiveSheet.Name = Range("AF2").Text
'Selction de la feuille récapitulatif
Sheets("Recapitulatif").Select
'selection de la ligne 8
Rows(8).Select
'Insertion d'une ligne
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'Selection de la feuille numéro 4
Sheets(4).Select
'Copie des totaux
Range("G25:AL25").Select
Selection.Copy
'Selection de la feuille récapitulatif
Sheets("Recapitulatif").Select
'copie en D8
Range("D8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
quelle est la difference entre sheet et worksheet?
Bonjour Dohvakiin
A mon avis il y a surtout un 1er problème
Dohvakiin a écrit :et autant de feuille que de semaine passé sur le chantier.
Comme je le dis souvent ce n'est parce que Excel permet de faire des feuilles dans un classeur qu'il faut tenter de battre le record du nombre de feuilles...
Je n'ai pas vu ton fichier... mais es-tu certain qu'il y a une différence entre plusieurs semaines du même chantier ?
Oui ! tu vas me dire... parce que la 1ère c'est la mise en place, la 2ème c'est l'exécution des travaux, la 3ème c'est l'exécution des travaux et la 4ème c'est la finition et le nettoyage du chantier... etc... déjà semaine 2 et 3 ont identiques !
Ce que je veux te faire comprendre c'est qu'Excel peut tout à fait faire "comme tu tentes d'organiser tes chantiers" mais tu vas vite te retrouver à parcourir soit beaucoup de fichier (si tu choisis de faire un classeur par chantier), soit beaucoup de feuilles...
Et cette méthode va vite te sembler fastidieuse et peut-être même contraignante !
Excel est un tableur, il faut donc penser sous forme de tableau !
Sheets est l'ensemble de toutes les feuilles du classeur, quel que soit leur type : feuilles de calcul, feuilles graphiques,
feuilles d'anciennes macros XL4, feuilles des anciennes boîtes de dialogue (ex-UserForm), feuilles UserForm, etc...
Worksheets est un sous-ensemble de la collection Sheets ci-dessus puisqu'il représente uniquement les feuilles de
calcul ; avantage d'utiliser Worksheets au lieu de Sheets : quand VBA doit utiliser une feuille de calcul donnée, il la
trouve plus rapidement puisqu'il la cherche seulement dans le sous-ensemble Worksheets au lieu de la chercher
dans la collection entière Sheets.
Je n'ai pas encore vu ton code VBA, mais je vais le faire maintenant. A+
Merci Dhany pour tes explication.
NCC 1701 a écrit :Bonjour Dohvakiin
Oui ! tu vas me dire... parce que la 1ère c'est la mise en place, la 2ème c'est l'exécution des travaux, la 3ème c'est l'exécution des travaux et la 4ème c'est la finition et le nettoyage du chantier... etc... déjà semaine 2 et 3 ont identiques !
Eh bien justement non. Chaque semaine est différente. Je cherche à voir combien d'heure sont consommé pour tels ou tels tache. Je peux te joindre le fichier si cela t'intéresse, et surtout pour avoir ton avis sur la viabilité du classeur
(re)
Oui tu peux joindre le fichier... c'est toujours plus pratique pour se rendre compte...
Par contre je suis certain moi, qu'une semaine de chantier est toujours identique à une autre semaine de chantier... même si les chantiers, les équipes, les clients sont différents...
Mais je vais regarder ton fichier pour voir si je me trompe
Bonsoir,
C'est sur que toutes les semaines ont bien 7 jours de 24 heures !
C'est vrai qu'une bonne conception des tableaux Excel consiste à tout mettre dans un seul tableau...Quand c'est possible !
A+
Et voila dis moi ce que tu en pense, moi personnellement ça correspond pas mal à mes besoin.
Ca me permet aussi de démarrer doucement l'automatisation de mes classeur.
(pointage...)
Le fichier
(re)
c'est un bon début...Dohvakiin a écrit :Et voila dis moi ce que tu en pense, moi personnellement ça correspond pas mal à mes besoin.Ca me permet aussi de démarrer doucement l'automatisation de mes classeur.(pointage...)
Maintenant je te prépare "ma vision" pour te prouver que
quegalopin01 a écrit :C'est sur que toutes les semaines ont bien 7 jours de 24 heures !
et c'est toujours possible ou alors je veux un exemplegalopin01 a écrit :C'est vrai qu'une bonne conception des tableaux Excel consiste à tout mettre dans un seul tableau...Quand c'est possible !
et
et tu vas voir que j'ai raison...NCC 1701 a écrit :qu'une semaine de chantier est toujours identique à une autre semaine de chantier... même si les chantiers, les équipes, les clients sont différents...
mais je ne suis pas fâché...
Il faut apprendre pour savoir, il faut apprendre des autres et de ses erreurs
Bonjour Dohvakiin,
Je te retourne ton fichier Excel modifié :
Attention : c'est surtout une optimisation du code VBA ; comme je ne suis pas sûr
de ce que tu voulais, vérifie bien tout, puis dis-moi ce que tu en penses.
Cordialement
Salut Dhany,
J'ai regardé tes modif et je me suis rendu compte qu'il y avait un bug s'il ont créer plusieurs feuilles successives.
J'ai corrigé le problème en intégrant des variables.
Il faut encore que j'intègre tes modification et ça devrait être bon.
Je te joint mon Fichier, il me reste aussi à gérer le changement d'année.
Bonjour Dohvakiin,
Quelques remarques sur ton propre code :
1) Tu as mis : Dim Depart As Integer puis : Depart = Range("E28") mais ensuite,
tu n'as pas utilisé Depart => j'ai supprimé cette variable inutile.
2) Tu as mis : Sheets(1).Move After:=Sheets(4) puis Sheets(4).Select
or suite au déplacement de la feuille 1 en position 4, on est déjà
sur la feuille 4 => la 2ème instruction Sheets(4).Select est inutile.
3) La 2ème ligne de code suivante est le « résumé » de la 1ère :
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValueson peut abréger ainsi car les 3 valeurs de droite qui suivent sont les valeurs par défaut :
ne pas faire d'opération (autre que le coller) ; sauter les blancs, pas de transposition
4) Tu as beaucoup d'instructions qui peuvent se faire sans .Select ; exemple :
Range("G7:AL22").Select puis Selection.ClearContents peuvent être unis :
Range("G7:AL22").ClearContents ; équivalent : [G7:AL22].ClearContents
5) Toujours en évitant de mettre des .Select inutiles, ça te permet aussi
d'éviter de passer trop souvent d'une feuille à une autre ; exemple :
toutes les instructions qui suivent :
Sheets(4).Select
Range("AG1").Select
Selection.Copy
Sheets(2).Select
Range("E29").Select
Selection.PasteSpecial Paste:=xlPasteValuespeuvent être résumé à :
[Info!E29] = Worksheets(4).[AG1](et de plus, le collage spécial en valeur était ici inutile)
Pour le reste, je te laisse regarder mon code VBA.
Tu pourras aussi voir que sur la feuille "Recapitulatif",
le 2ème bouton « Nouvelle Année » marche bien.
Merci de me donner ton avis.