XL 2010 VBA Sendkeys qui se lance sur le mauvais onglet.

morest38

XLDnaute Nouveau
Salut à tous et merci de prendre le temps de lire ce post.
Voici le code que j'ai. Le but est d'envoyer la consigne, depuis l'onglet B, de descendre d'une cellule sur l'onglet "A" mais l'application ne se rafraîchit pas et la sélection se fait sur l'onglet inital "B"

Code:
Sub OneDown()
Application.ScreenUpdating = False
Sheets("A").Activate
ActiveCell.Activate
SendKeys "{down}"
Sheets("B").Select
Application.ScreenUpdating = True
End Sub

J'aurais pu utiliser offset mais comme j'ai des filtres il n'y a que la flèche qui permet de prendre en compte les lignes cachées.

Merci d'avance pour votre précieuse aide.
 

morest38

XLDnaute Nouveau
Salut,
En cherchant sur les forums anglais j'ai trouvé ce code.
Code:
Dim rng As Range
Set rng = Range(Cells(ActiveCell.Row + 1, ActiveCell.Column), Cells(Rows.Count, ActiveCell.Column))
rng.SpecialCells(xlCellTypeVisible).Cells(1).Select
Ca marche parfaitement pour selectionner la cellule visible du dessous mais je n'arrive pas à faire selectionner la cellule visible du dessus au lieu du dessous. En gros comment faire la même chose à l'envers?

Merci encore!
@+
 

morest38

XLDnaute Nouveau
Salut,
J'ai essayé Sleep mais il faut importer la fonction donc c'est vraiment pas pratique.
J'ai essayé avec Application.wait mais ça ne marche pas.

Ce code est idéal
Code:
Dim rng As Range
Set rng = Range(Cells(ActiveCell.Row + 1, ActiveCell.Column), Cells(Rows.Count, ActiveCell.Column))
rng.SpecialCells(xlCellTypeVisible).Cells(1).Select
Mais il ne va que vers le bas. Comment faire pour qu'il aille vers le haut?
Merci d'avance.
 

job75

XLDnaute Barbatruc
Bonjour morest38, laurent950, Michel, le forum,
Code:
Sub Down()
Dim i&, flag As Boolean
Application.ScreenUpdating = False
Sheets("A").Activate
For i = ActiveCell.Row + 1 To Rows.Count
    If Not Rows(i).Hidden Then ActiveCell(1 + i - ActiveCell.Row).Select: flag = True: Exit For
Next
Sheets("B").Activate
Application.ScreenUpdating = True
If Not flag Then MsgBox "Sélection impossible en feuille A..."
End Sub

Sub Up()
Dim i&, flag As Boolean
Application.ScreenUpdating = False
Sheets("A").Activate
For i = ActiveCell.Row - 1 To 1 Step -1
    If Not Rows(i).Hidden Then ActiveCell(1 + i - ActiveCell.Row).Select: flag = True: Exit For
Next
Sheets("B").Activate
Application.ScreenUpdating = True
If Not flag Then MsgBox "Sélection impossible en feuille A..."
End Sub
Bonne journée.
 

job75

XLDnaute Barbatruc
Re,

Avec une macro paramétrée :
Code:
Sub Choix()
Selectionner MsgBox("""Oui"" pour sélectionner vers le bas, ""Non"" pour sélectionner vers le haut", 4, "En feuille A") = 6
End Sub


Sub Selectionner(down As Boolean)
Dim i&, flag As Boolean
Application.ScreenUpdating = False
Sheets("A").Activate
For i = ActiveCell.Row + IIf(down, 1, -1) To IIf(down, Rows.Count, 1) Step IIf(down, 1, -1)
    If Not Rows(i).Hidden Then ActiveCell(1 + i - ActiveCell.Row).Select: flag = True: Exit For
Next
Sheets("B").Activate
Application.ScreenUpdating = True
If Not flag Then MsgBox "Sélection impossible en feuille A..."
End Sub
A+
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16