begin process at 2008 08 30 18:23:33
1 234 147 membres
180 nouveaux aujourd'hui
14 294 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : pb VBA excel pilotage de fenêtre [ Divers / Débutants ] (rosbeef87100)

pb VBA excel pilotage de fenêtre le 18/06/2008 17:21:15

rosbeef87100
Bonjour à tous,

dans le cadre de mon stage je suis amené à découvrir VBA, cela fait deux jours que j'avance mais je bute sur un problème récurrent, j'aimerais emmener la fenêtre d'excel sur une cellule laquelle est déterminer par une fonction. La fonction marche bien et me donne ligne et colonne de la cellule. Le problème c'est que lorsque j'essaie d'envoyer la fenêtre sur cette position il ne se passe rien, j'ai essayé plusieurs méthodes telles que :

ActiveWindow.SmallScroll Down:= valeur

Cells(Result, c).Activate
With ActiveWindow
.ScrollColumn = ActiveCell.Column
.ScrollRow = ActiveCell.Row
End With

mais cela ne fonctionne pas, la fenêtre ne bouge pas. Comme je l'ai dis je suis dans une fonction, alors j'ai essayé dans une procédure sub et la miracle cela fonctionne. néanmoins j'ai beaucoup de paramètre dans ma fonction et je ne veux pas la transformer en sub qui rendrai la frappe des paramètres trop longue. J'ai alors essayé de piloter avec une sub en l'appelant de la fonction :

Call Center

et

Sub Center()
ActiveWindow.SmallScroll Down:=Result
End Sub

Result est bien défini en dehors des deux procédure et quand je n'appel que center cela marche très bien. Mais pas lorsque j'utilise ma fonction. Je ne sais plus trop quoi faire, si il est impossible de piloter la fenêtre dans une procédure ce serai vraiment un gros trou dans les fonctions de vba, et ce serai étonnant.

Est ce que quelqu'un peut m'aider?
Merci d'avance et désolé si la solution est évidente, perso j'ai bien cherché et je ne trouve pas.

Re : pb VBA excel pilotage de fenêtre le 18/06/2008 18:00:15

bigfish_le vrai
Salut,

j'aimerais emmener la fenêtre d'excel sur une cellule ??? ça veut dire quoi ? c'est comme si tu voulais mettre ta voiture dans son coffre(de la meme voiture) ou tes pantalons dans une de ses poches(du meme pantalon) Kway avait inventé le principe mais j'ai jamais imaginé que quelqu'un essairait avec excel

Mais je crois avoir compris : tu voudrais afficher/centrer une cellule de la feuille active sur la fenetre d'excel.

tu pourrais nous donner ta fonction pour mieux comprendre le probleme.

sinon une autre solution :

Application.Goto Reference:=ActiveSheet.Range("Aj400"),Scroll:=True

A+



Re : pb VBA excel pilotage de fenêtre le 18/06/2008 19:28:56

rosbeef87100
merci big_fish mais cela ne fonctionne pas non plus. cette ligne permet bien de recentrer la fenetre sur une cellule mais dès que tu la met dans une fonction ça ne marche plus. Je cherche à faire quelque chose du genre:

Function GO2(A As Variant, B As Variant)
Application.Goto Reference:=ActiveSheet.Cells(A, B), Scroll:=True
End Function



Re : pb VBA excel pilotage de fenêtre le 19/06/2008 09:31:53

lermite222
Membre Club
bonjour,
Tu ne précise pas Excel ????,
Ta fonction est dans un module de feuille ou dans un module de macro ?
Si ta fonction est dans un module de feuille c'est pas possible d'agir sur une autre feuille.
Si ta fonction est dans un module, essaye en mettant le nom de la feuille d'abord...
Sheets("NomFeuille").cells(X,Y).Activate

A+

Re : pb VBA excel pilotage de fenêtre le 19/06/2008 10:31:32

mortalino
Membre Club
salut,

je pense que tu nous embrouilles un peu avec ta demande.
Un simple Cells(x, y).Activate suffit pour centrer la fenêtre Excel sur cette cellule, et ce, peu importe d'où tu appelles cette instruction.

Tu veux une fonction ? pas besoin, le Activate de l'objet Cells ou Range le fait très bien.

Donc si ma réponse ne te convient pas, donne plus de détails sur la localisation de ta Sub ou Function (Module, Sheets) et ce genre de chose utile pour notre compréhension

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA

Re : pb VBA excel pilotage de fenêtre le 19/06/2008 11:15:59

rosbeef87100
Salut et merci pour vos réponses,

je suis bien sous excel et dans un module, mon problème principal vient du fait que toute ses lignes permettent bien d'envoyer la fenêtre au dessus d'une cellule que ce soit activate ou select mais seulement si l'on se trouve dans une procédure de type sub. Ma fonction est toute symple, et elle a déjà été le sujet de conversation, elle permet de rechercher une donnée dans une colonne du fichier les paramètres de la fonction sont le String recherché, la colonne, la ligne de départ et la ligne de fin de la recherche. Je n'utilise pas Find mais

InStr(1, Cells(i, c).Value, Val, vbTextCompare) = 0

dans une boucle If pour  déterminer l'emplacement de la l'information. Soit elle n'est pas trouvé et alors j'ai un message "pas de valeur trouvée" soit j'ai alors toutes les indications la colonne et la ligne de la cellule qui contient la recherche. C'est alors que dans le cas où l'on trouve, je voudrais que la fênetre active soit au niveau de cette ligne, mais c'est alors que se pose le problème : la fenêtre ne bouge pas reste la où elle était. Pour l'instant faute de contre éxemple, je pense que c'est du au fait que mon programme soit une fonction.

Dès que je cherche à centrer la fenètre quelque par dans une sub ça marche très bien, alors deuxième étape j'ai essayé d'appeler une sub dans ma fonction avec "Call Center", mais la non plus il ne se passe rien. La procédure marche très bien lorsqu'elle est appelée seule mais pas lorsqu'elle est appelée de ma fonction.


Je ne cherche pas forcément à trouver une solution miracle, mais j'aimerais juste comprendre si c'est une limitation inhérente aux fonctions VBA ou si c'est moi qui m'y prends mal.

encore un dernier exemple, Result est le nom de ma ligne et c est ma colonne,

Sheets("Nomdelafeuille").Cells(Result, c).Activate

ne marche pas dans la fonction, mais marche très bien dans une
Sub Center()
Sheets("Nomdelafeuille").Cells(Result, c).Activate
End Sub
pour peu que j'ai déclaré result en Option Explicit et elle pointe vers la bonne cellule.

Voilà merci pour le temps que vous consacrez à mon petit problème.

Re : pb VBA excel pilotage de fenêtre le 19/06/2008 11:21:21

lermite222
Membre Club
Ont risque de tourner en rond encore longtemps, montre ta macro, ce serra plus simple.

Re : pb VBA excel pilotage de fenêtre le 19/06/2008 11:34:16

rosbeef87100
ok, voilà mais elle n'a rien de spéciale :

Function Find3(ByRef Val As String, c As Double, sta As Double, sto As Double)
Dim ok As Double
Dim i As Double
Result = 0
i = sta
ok = 0
If Val <> "" Then
    While ok <> 1
            If (InStr(1, Cells(i, c).Value, Val, vbTextCompare) = 0) Then
            i = i + 1
            Else
            Result = i
            ok = 1
        End If
        If i > sto Then
            ok = 1
            MsgBox ("no data found")
        End If
    Wend
MsgBox ("result " & Result)
End If
Cells(Result, c).Activate
End Function

Re : pb VBA excel pilotage de fenêtre le 19/06/2008 11:38:13

rosbeef87100
Rmq
même problème avec
ActiveSheet.Cells(Result, c).Activate

Re : pb VBA excel pilotage de fenêtre le 19/06/2008 11:57:06

lermite222
Membre Club
Macro testée, fonctionne normalement et cellule activée...
Tu n'aurrais pas des événement gérer dans la feuille comme par exemple dans
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Private Sub Worksheet_Activate()
...
Si c'est le cas tu peu ajouter au début de ta fonction
  Application.EnableEvents = False
 ......
et à la fin
     Application.EnableEvents = true


[Page 1 Page 2]
Classé sous : vba, fonction, excel, fenêtre, essayé

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS