|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Ressources humaines Inscription : janvier 2012 Messages : 6 ![]() |
Bonjour,
Je souhaite automatiser le remplissage d'un tableau de la manière suivante : les cellules A1:H1 contiennent des formules alimentées par les utilisateurs du fichier. je veux automatiser le "copier spécial valeur" de ces cellules dans un tableau en fonction de la date. si les modifications interviennent à la même date : écrasement de la ligne du tableau, si les modifications ont lieu à une date ultérieure, les valeurs s'inscrivent dans la ligne au dessous. Merci de vos réponses. |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Architecte Inscription : mai 2002 Messages : 1 057 ![]() |
Recueillir la valeur de la date à tester dans une variable.
Tester si cette date existe dans la colonne date de référence. Si c'est le cas, écraser la ligne par les nouvelles valeurs, sinon ajouter ces valeurs dans une nouvelle ligne. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Ressources humaines Inscription : janvier 2012 Messages : 6 ![]() |
Merci pour la réponse mais en code, ça donne quoi ? En fait, je ne sais pas comment créer le code pour sélectionner la ligne à coller. je ne suis pas fort en vba.
|
|
|
00
|
|
|
#4 | |||||
|
Membre chevronné
![]() Architecte Inscription : mai 2002 Messages : 1 057 ![]() |
Difficile de répondre sans connaître ton niveau de compétence ainsi que ce que tu veux exactement faire.
Point de départ, est-ce que tu veux l'exécution automatique d'une macro quand une valeur est entrée dans une cellule particulière ou l'exécution manuelle par appel de la macro ? Question 2 quand tu dis Citation:
Pour t'aider à débuter, voici le code des déclarations des classeurs et des feuilles Code :
Code :
Code :
C2Sheet.Cells(RowNo, 1).Insert ' Paste peut engendre une erreur avec certaines versions de Excel |
|||||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Ressources humaines Inscription : janvier 2012 Messages : 6 ![]() |
Merci pour ces réponses. Je n'ai pas encore eu le temps de tester.
En fait, j'ai créé un fichier excel pour le suivi des matériels de ma boite. Ce fichier est en partage entre les différents intervenants qui modifient une feuille du fichier. Sur une deuxième feuille, cachée des utilisateurs, j'ai une ligne de formules. avec ces formules je remplis un tableau situé en dessous qui me sert à faire différents bilans. Pour éviter de faire un "copier coller spécial valeur" manuel à chaque modification des données, je voudrais que les utilisateurs, en validant leurs modifications à l'aide d'un bouton, remplissent automatiquement mon tableau. Le seul truc que je ne sais pas faire, c'est écrire le script pour dire à vba ou coller la fameuse ligne de calcul, en fonction de la date. s'il y a plusieurs modifications dans la même journée, je ne conserve que la dernière, si la modification intervient à une date différente, je veux que la macro me remplisse la ligne suivante.
|
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Architecte Inscription : mai 2002 Messages : 1 057 ![]() |
Pour automatiser la récolte des données entrées par l'utilisateur sans que celui-ci ne doive intervenir en cliquant sur un bouton, je placerais le code dans l'évènement SelectionChange.
Cette macro doit donc débuter par la vérification que les cellules à copier comportent les valeurs nécessaires pour ne s'exécuter que si c'est bien le cas. |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Ressources humaines Inscription : janvier 2012 Messages : 6 ![]() |
Comme je l'ai dit plus haut, je débute en vba. Restons simple, si quelqu'un pouvais m'aider à écrire ce script, ce serais sympa. il sera toujours temps de le perfectionner plus tard.
|
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Alors j'utiliserais l'évènement Worksheet_Change plutôt que Worksheet_SelectionChange. Ce qui donnerait le code suivant, après avoir écrit par exemple "date" en I1 de la feuille qui contiendra l'historique.
Pense aussi à modifier le nom de le cette feuille dans le code (ici "Feuil2"). Ce code doit être placé dans le code de la feuille sur laquelle les modifications sont effectuées Code :
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Ressources humaines Inscription : janvier 2012 Messages : 6 ![]() |
Merci la macro fonctionne, sauf qu'il faut rentrer manuellement les valeurs dans les cellules a1:h1. Ces cellules contiennent des fonctions. Comment modifier le script pour qu'il fonctionne lorsque les valeurs de ces cellules changent ?
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Il faut mettre le worksheet_change sur les cellules dont dépendent les fonctions. Ou si tu ne les connais pas, sur toutes les cellules susceptibles de modifier le range.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Ressources humaines Inscription : janvier 2012 Messages : 6 ![]() |
Excellent, c'est exactement ce que je voulais. Merci beaucoup pour le coup de pouce et longue vie au forum.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com