Bonjour,
J'aimerai qu'Excel effectue une tâche si quelqu'un effectue une recopie incrémentée, est-ce possible ? Et si oui, comment faire ?
Merci de votre aide
Version imprimable
Bonjour,
J'aimerai qu'Excel effectue une tâche si quelqu'un effectue une recopie incrémentée, est-ce possible ? Et si oui, comment faire ?
Merci de votre aide
Bonsoir à tous
Bonsoir David
Pas très clair ta demande.
"...quelqu'un effectue une recopie incrémentée.." une sauvegarde du même fichier ?
"....qu'Excel effectue une tâche ...." dans le fichier même ?
Eric
Bonsoir,
Je doute que l'interception d'un événement du genre "recopie-incrémenté" soit possible... :( , peu-être en partant sous l'événement change, et en testant ensuite, les valeurs des cellules adjaçante.. ? quel est le but final de la manip ? la valeur de l'incrément est-il toujours le même ? une piste peu-être à chaque événement change la mémorisation du couple adresse/Valeur et comparaison avec dernier couple mémorisé.
JacqueS.
Bonjour,
Et on route pour une nouvelle semaine de boulot
En fait je suis en train de réaliser un test permettant d'évaluer les compétences sur Excel
J'ai une question qui demande seulement à l'utilisateur d'effectuer une recopie incrémenter
Seulement comment s'assurer qu'il n'a pas fait un copier/coller ou qu'il n' a pas recopier les formules manuellement ?
L'idéal étant biensur d'enregistrer les manip de l'utilisateur comme avec l'assistant de création de macros mais j'ai pas trouver comment le lancer par vba
cet évenement n'existe pas tout fait... donc il faut le créer et pour cela il faut créer une nouvelle classe avec la gestion des évenements qui vont bien:
voir : http://fauconnier.developpez.com/art...neral/classes/
si tu y arrive tu postes dans contribuez, ça pourrait interresser du monde.
Ok merci ça va me faire un peu de lecture
si je trouve je fais signe
Bonjour (Merci d'avoir pensé à mon article...)
La création d'une classe personnalisée permet effectivement de créer des événements, mais uniquement sur la classe personnalisée, puisque cet évènement doit être levé lors du passage du code sur une ligne
qui se trouverait à l'intérieur de la classe.Code:Raisevent ....
[EDIT] On pourrait imaginer de créer un évènement sur un module de feuille ou de classeur, mais je ne vois pas à quoi cela avancerait dans ce cas[/EDIT]
Donc, je ne vois pas trop comment on pourrait s'en sortir avec une classe perso dans ce cas-ci. Quoi qu'il en soit, on ne ferait pas l'économie de voir comment on peut détecter la recopie, incrémentée ou pas, d'ailleurs.
La piste d'aller voir par l'événement Change est peut-être une bonne piste, mais je ne vois pas trop, actuellement, comment détecter que l'on tente une recopie... il y a peut-être les api's, mais je ne vois pas trop non plus.
Une piste intéressante pourrait être de détecter les mouvements de souris et le clavier, mais je pense que cela devient un peu lourd.
A ce stade, je serais tenté de dire:
Quel est le but, et quelle est la situation de départ? il y a peut-être autre chose à réaliser, ou un autre chemin à prendre...
Bêtement surement, j'avais pensé que l'on pouvait détecter la recopie par le fait que l'on ai un range qui comprends au moins 3 cellules concomittentes et que leurs valeurs se suivent selon un ordre logique puisque l'on est capable de comparer les deux premières et de comparer ce 1er résultat aux différences des cellules suivantes. non ? c'est idiot ?
Qui qu'il en soit je te remerci pour cet article fort enrichissant et qui à révolutionné mon approche de la programmation en VBA (faut dire que je suis autodidacte...donc forcément j'ai devellopper des stratégie un peu hors normes parfois..:mrgreen:)
Je suis en pleine lecture et j'ai effectivement pas l'impression que ça puisse résoudre mon pb
Sinon est-il possible d'enregistrer en vba ce que fait l'utilisateur ? ce qui me permettrait de voir si la recopie incrémentée a été utilisée ou non
Il faudrait pouvoir forcer l'assistant création de macro à se lancer après la validation de la question précédente et l'arrêter automatiquement après la validation de la question en-cours
Le fait de rechercher les cellules qui se suivent est certainement une piste à creuser.
Mais pour plusieurs raisons qu'il est long d'expliquer ici (je le ferai prochainement en annexe de mon tuto, car je pense que cela peut être utile), il n'est pas pertinent de créer une classe pour cela.
Cela étant, merci de ton commentaire, et tant mieux si cela t'a aidé dans ton travail avec VB
Bonjour tlm,
Une piste à peaufiner
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim i As Integer, x As Single, Verif As Boolean, Cel As String If Target.Count > 2 Then For i = Target.Row To Target.Row + Target.Count - 1 Select Case i Case Target.Row x = Cells(Target.Row + 1, Target.Column) - Cells(Target.Row, Target.Column) If x = 0 Then Exit Sub Case Is > Target.Row If Cells(i, Target.Column) - Cells(i - 1, Target.Column) = x Then Verif = True Cel = Target.Address(0, 0) End If End Select Next End If If Verif = True Then MsgBox "Copie incrémentée utilisée sur les cellules suivantes : " & Cel, vbExclamation End Sub
Non, il n'est pas possible d'utiliser un traceur qui mémoriserait les actions de l'utilisateur et qui, en plus, permettrait d'être lu en réel pour démarrer un code sur une action particulière.
C'est pour cela que les évènements ont été mis à disposition, sauf celui qui te fait défaut ici.
Je pense que je vais opter pour un Selection_Change car la sélection est différente lors d'un copier/coller et je vais mettre un résultat en condition supplémentaire
Je pense quand même avoir un risque d'erreur de cette façon mais en attendant c'est toujours ça