Commande de démarrage d'une macro
Fermé
fax32
Messages postés
25
Date d'inscription
mardi 27 octobre 2009
Statut
Membre
Dernière intervention
12 novembre 2009
-
12 nov. 2009 à 19:43
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 27 nov. 2009 à 14:01
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 27 nov. 2009 à 14:01
A voir également:
- Commande de démarrage d'une macro
- Invite de commande - Guide
- Forcer demarrage pc - Guide
- Pc lent au démarrage - Guide
- Reinitialiser pc au demarrage - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
2 réponses
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
13 nov. 2009 à 08:24
13 nov. 2009 à 08:24
Bonjour,
il a en effet pu faire cela car il utilise l'évènement (VBA) associé. Pour pouvoir faire ce que tu désires il faudrait disposer d'un évènement "KeyDown" qui n'existe pas pour une Sheet Excel :-(
Mais pourquoi donc tu veux associé cette combinaison de touche, déjà utilisé par Excel et Windows, à ta macro ?
Ce que tu peux faire c'est par exemple Ctrl + Shift + V ... en sélectionnant ta macro dans le menu, tu choisis les options et tu associes cette combinaison de touches.
il a en effet pu faire cela car il utilise l'évènement (VBA) associé. Pour pouvoir faire ce que tu désires il faudrait disposer d'un évènement "KeyDown" qui n'existe pas pour une Sheet Excel :-(
Mais pourquoi donc tu veux associé cette combinaison de touche, déjà utilisé par Excel et Windows, à ta macro ?
Ce que tu peux faire c'est par exemple Ctrl + Shift + V ... en sélectionnant ta macro dans le menu, tu choisis les options et tu associes cette combinaison de touches.
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
27 nov. 2009 à 14:01
27 nov. 2009 à 14:01
Bonjour,
désolé de répondre si tard, je donnais une formation à Paris.
Ne t'inquiète pas sur tu ne connais pas l'event Keydown :=) c'est du jargon de développeur.
Pour revenir à ta macro, ben elle marchera si :
Tu ajoutes en effet un "End Sub" :
Sub MaMcro
'bla bla bl
End Sub
qui est manquant dans ton code.
Quelques petites erreurs aussi :
il manque en dessous de :
"Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) "
On error goto erreur
avant le "Exit Sub" tu dois écrire :
"Sortie:"
remplace : "MsgBox Target & " inconnu dans le stock"
par
Msgbox Err.Description
Err.Clear
Resume Sortie
Le plus surprenant c'est que dans ton code tu écris que si le nom de ta sheet (heu ... ta feuille excel hun ;=)
vaut "ventes" tu sors de la procédure alors que plus loin tu formates ta page qui porte le même nom ????
.... ActiveSheet.Name = "ventes" Or ActiveSheet.Name = "stock" Then Exit Sub
...With Sheets("ventes")
.Rows(.Range("A65536").End(xlUp).Row + 1) = Rows(Target.Row).Value
End With
Si tu fais ça tu ne rentreras jamais dans ta macro !
Le plus simple avec les macros :
1) Tu choisis dans le menu "Outils", "Macro", "Nouvelle macro"
2) Quand tu as finis ta sélection tu cliques sur le bouton "Stop" qui est affiché à l'écran dans une barre d'outil flotante.
3) Pour trouver le code générée par ta macro : "Outils", "Macro", "Visual Basic Editor", il devrait y avoir sur la gauche de l'écran un ...Project dans lequel se trouve un fichier intitulée Module1, dans lequel tu trouveras ta macro (Macro1 si tu as choisit le nom proposé par Excel)
désolé de répondre si tard, je donnais une formation à Paris.
Ne t'inquiète pas sur tu ne connais pas l'event Keydown :=) c'est du jargon de développeur.
Pour revenir à ta macro, ben elle marchera si :
Tu ajoutes en effet un "End Sub" :
Sub MaMcro
'bla bla bl
End Sub
qui est manquant dans ton code.
Quelques petites erreurs aussi :
il manque en dessous de :
"Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) "
On error goto erreur
avant le "Exit Sub" tu dois écrire :
"Sortie:"
remplace : "MsgBox Target & " inconnu dans le stock"
par
Msgbox Err.Description
Err.Clear
Resume Sortie
Le plus surprenant c'est que dans ton code tu écris que si le nom de ta sheet (heu ... ta feuille excel hun ;=)
vaut "ventes" tu sors de la procédure alors que plus loin tu formates ta page qui porte le même nom ????
.... ActiveSheet.Name = "ventes" Or ActiveSheet.Name = "stock" Then Exit Sub
...With Sheets("ventes")
.Rows(.Range("A65536").End(xlUp).Row + 1) = Rows(Target.Row).Value
End With
Si tu fais ça tu ne rentreras jamais dans ta macro !
Le plus simple avec les macros :
1) Tu choisis dans le menu "Outils", "Macro", "Nouvelle macro"
2) Quand tu as finis ta sélection tu cliques sur le bouton "Stop" qui est affiché à l'écran dans une barre d'outil flotante.
3) Pour trouver le code générée par ta macro : "Outils", "Macro", "Visual Basic Editor", il devrait y avoir sur la gauche de l'écran un ...Project dans lequel se trouve un fichier intitulée Module1, dans lequel tu trouveras ta macro (Macro1 si tu as choisit le nom proposé par Excel)
14 nov. 2009 à 19:28
Tout d'abord merci d'avoir répondu à mon message.
Tu me dis : "Il a en effet pu faire cela car il utilise l'évènement (VBA) associé. Pour pouvoir faire ce que tu désires il faudrait disposer d'un évènement "KeyDown" qui n'existe pas pour une Sheet Excel :-( "
Je dois t'avouer que j'ai déjà décroché ! Je suis comme une poule devant un écrou de 12.
En revanche je pense avoir compris la suite. Je ne veux pas spécialement utiliser cette combinaison de touches, mais je n'arrive pas à sélectionner ma macro dans le menu car dès que je la nomme, elle ne fontionne plus.
Voici la totalité de la macro :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'si on sélectionne hors A1:10000 ou si la feuille active est "ventes" ou "stok" :sortie de la macro
If Intersect(Target, Range("A1:A10000")) Is Nothing _
Or ActiveSheet.Name = "ventes" Or ActiveSheet.Name = "stock" Then Exit Sub
'détruit dans la feuille la ligne correspondant à la valeur sélectionnée en feuille active
With Sheets("stock")
On Error GoTo erreur:
.Rows(.Columns(1).Find(Target.Value, .Range("A65536"), xlValues).Row).Delete
End With
'report dans la 1° ligne vide de "ventes" des valeurs de la ligne sélectionnée dans feuille active
With Sheets("ventes")
.Rows(.Range("A65536").End(xlUp).Row + 1) = Rows(Target.Row).Value
End With
'ligne de la sélection feuille active
lig = Target.Row
'tableau des num de colonnes à effacer
cellule = Array(3, 4, 6, 7, 9, 10, 12, 13, 15, 16, 18, 19, 21)
'boucle sur le tableau en effacant le contenu
For cptr = 0 To UBound(cellule)
Cells(lig, cellule(cptr)).ClearContents
Next
'colorie la ligne en gris
Rows(lig).Interior.ColorIndex = 48
Exit Sub
erreur:
MsgBox Target & " inconnu dans le stock"
End Sub
Si je nomme cette macro pour l'avoir dans le menu, par exemple si en tête je rajoute
Sub Objets_vendus()
' Objets_vendus Macro
' Macro enregistrée le 15/10/2009 par
Elle ne fonctionne pas et me dis "End sub attendu" avant la première ligne de la macro.
J'espère ne pas avoir été trop confus.
Amicalement