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
 

Fichiers joints

Pierrot93

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

Bonjour à tous

@Jetted
sauf erreur de ma part, avec ton code si tu selectionnes une cellule de la colone A, ta "macro1" s'exécutera 2 fois...

bonne soirée
@+
 

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
 

Fichiers joints

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
 

Pierrot93

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

Re

Aarf Eric, les 2 codes se déclenchent 2 fois si colonne A... lol @+
 

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)
 

ERIC S

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

Fatigue du soir....

.....:(

C'était beau pourtant:rolleyes:
 

ERIC S

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

Re

quel est le code de ta macro? (par copier coller cela doit passer)
 

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+
 

herve80

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

laissez tomber pour le moment

merci quand même :)
 

Discussions similaires


Haut Bas