Si cellule active en colonne A, allez colonne B ...

herve80

XLDnaute Occasionnel
Bonjour,

Quelle macro pour les actions suivantes:

1 - si cellule active dans colonne A (ex: en A12) , allez à la cellule à côté (B12) puis seulement lancer la macro

2 - si cellule active en colonne B, alors ok, lancer la macro

Je serai vraiment content si vous aviez une solution merci :)

Bonne fin de journée
 

youky(BJ)

XLDnaute Barbatruc
Re : Si cellule active en colonne A, allez colonne B ...

Bonsoir hervé80,
un click droit sur l'onglet et visualiser le code
et à copier en intégrale
remplace macro1 par le nom de ta macro
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 Then Target.Offset(, 1).Select
If Target.Column = 2 Then Call macro1
End Sub
 

jetted

XLDnaute Occasionnel
Re : Si cellule active en colonne A, allez colonne B ...

Voir document ci joint

et voici le code

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    colonne = ActiveCell.Column
    If colonne = 1 Then
        ActiveCell.Offset(0, 1).Select
        Call macro1
    End If
    If colonne = 2 Then
        Call macro1
    End If
End Sub

Code:
Sub macro1()
MsgBox "Vous avez appeler la macro1"
End Sub
 

Pièces jointes

  • appel_macro1.zip
    7.2 KB · Affichages: 90

ERIC S

XLDnaute Barbatruc
Re : Si cellule active en colonne A, allez colonne B ...

Bonjour à tous

Jetted je ne suis pas d'accord avec toi : en cas de sélection en A tu appelles 2 fois la macro

fais l'essai en remplaçant les "call..."

par msgbox "ok1" et msgbox"OK2" :p

trop rapide Pierrot, j'ai perdu du temps avec le smiley...........
 

jetted

XLDnaute Occasionnel
Re : Si cellule active en colonne A, allez colonne B ...

Vous avez raison je me suis trompe dans mon code
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
    colonne = ActiveCell.Column
    If colonne = 1 Then
        ActiveCell.Offset(0, 1).Select
        Call macro1
    ElseIf colonne = 2 Then
        Call macro1
    End If
    Application.EnableEvents = True
End Sub
 

Pièces jointes

  • appel_macro1.1.zip
    7.1 KB · Affichages: 70

Pierrot93

XLDnaute Barbatruc
Re : Si cellule active en colonne A, allez colonne B ...

Re, bonsoir Eric:)

privilégier plutôt ainsi :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 1 Then
        Target.Offset(0, 1).Select
    ElseIf Target.Column = 2 Then
        Call macro1
    End If
End Sub

quand ce n'est pas vraiment necéssaire, éviter de désactiver les procédures événementielles, car en cas de plantage... faudra attendre le prochain redémarrage d'Excel ou les réactiver par le code...

D'autre part, l'événement "SelectionChange" contient déjà une variable de type range permettant d'identifier la cellule sélectionnée, pourquoi s'en priver.. Enfin c'est juste mon point de vue... bonne soirée
 

ERIC S

XLDnaute Barbatruc
Re : Si cellule active en colonne A, allez colonne B ...

Re

soyons fous, (je n'ai pas essayé)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <3 Then
Target.Offset(0, 2-target.column).Select
Call macro1
End If
End Sub

ou
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <3 Then
cells(Target.row,2).Select
Call macro1
End If
End Sub
 

herve80

XLDnaute Occasionnel
Re : Si cellule active en colonne A, allez colonne B ...

Hélas, je ne peux pas vous envoyer mon fichier, trop gros (120 ko pq ?)

Ca ne va pas. Faut-il renommer "macro1" ?

En fait j'ai deux macros :
si F5 monter cellule (si le texte était en B15, il passe en B14)
si F6 descendre cellule (si texte en B15 il passe en B16)
 

herve80

XLDnaute Occasionnel
Re : Si cellule active en colonne A, allez colonne B ...

Attention vous allez rire (c'est boiteux comme code)

1
Private Sub Workbook_Open()
ScreenUpdating = False
MsgBox "F5 = monter la phrase" & Chr(10) & _
"F6 = descendre la phrase" & Chr(10) & _
"F4 = cellule selectionnée mise en forme" & Chr(10) & _
"F11 = supprimer lignes vides = cellule selectionnée mise en forme"
Range("A2").Select
Application.OnKey "{F5}", "monter"
Application.OnKey "{F6}", "descendre"
Application.OnKey "{F4}", "mise_en_forme"
Application.OnKey "{F10}", "message"
Application.OnKey "{F11}", "supprime_lignes_vides"
End Sub

Module 1
Sub monter()

SendKeys "{up}"
SendKeys "^x"
SendKeys "{RIGHT 1}"
SendKeys "^v"

SendKeys "{down}": SendKeys "{left}"

SendKeys "^x"
SendKeys "{up}"
SendKeys "^v"

SendKeys "{RIGHT 1}"
SendKeys "^x"
SendKeys "{down}": SendKeys "{left}"
SendKeys "^v"
SendKeys "{up}"

SendKeys "{left}"
SendKeys "^x"
SendKeys "{RIGHT 2}"
SendKeys "^v"

SendKeys "{LEFT 2}": SendKeys "{down}"
SendKeys "^x"
SendKeys "{up}"
SendKeys "^v"

SendKeys "{RIGHT 2}"
SendKeys "^x"
SendKeys "{LEFT 2}": SendKeys "{down}"
SendKeys "^v"
SendKeys "{up}": SendKeys "{right}"
End Sub

Module 2
Sub descendre()
SendKeys "{down}"
SendKeys "^x"
SendKeys "{RIGHT 1}"
SendKeys "^v"

SendKeys "{up}": SendKeys "{left}"

SendKeys "^x"
SendKeys "{down}"
SendKeys "^v"

SendKeys "{RIGHT 1}"
SendKeys "^x"
SendKeys "{up}": SendKeys "{left}"
SendKeys "^v"
SendKeys "{down}"

SendKeys "{left}"
SendKeys "^x"
SendKeys "{RIGHT 2}"
SendKeys "^v"
SendKeys "{LEFT 2}": SendKeys "{UP}"
SendKeys "^x"
SendKeys "{down}"
SendKeys "^v"
SendKeys "{RIGHT 2}"
SendKeys "^x"
SendKeys "{LEFT 2}": SendKeys "{UP}"
SendKeys "^v"
SendKeys "{down}"
End Sub

Le reste du code ne concerne pas ce que je veux, qui est:

si la cellule active est en A, alors aller en colonne B pour lancer la macro (qui est soit "monter" ou "descendre", mais qui ne peut donc fonctionner que si je suis en colonne B)
 

youky(BJ)

XLDnaute Barbatruc
Re : Si cellule active en colonne A, allez colonne B ...

Bonsoir à tous,
Bonsoir Hervé
Je reste pantois devant autant de sendkeys, je pense qu'il est urgent de faire du code autrement, pour ma part je n'arrive pas à décripter ce que tout ceci doit faire.
Si possible dit nous ce que fait tout ces sendkeys on traduira en plus simple.
a+
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof