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)

mercredi 18 juin 2008 à 17:21:15 | pb VBA excel pilotage de fenêtre

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.

mercredi 18 juin 2008 à 18:00:15 | Re : pb VBA excel pilotage de fenêtre

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+



mercredi 18 juin 2008 à 19:28:56 | Re : pb VBA excel pilotage de fenêtre

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



jeudi 19 juin 2008 à 09:31:53 | Re : pb VBA excel pilotage de fenêtre

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+

jeudi 19 juin 2008 à 10:31:32 | Re : pb VBA excel pilotage de fenêtre

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

jeudi 19 juin 2008 à 11:15:59 | Re : pb VBA excel pilotage de fenêtre

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.

jeudi 19 juin 2008 à 11:21:21 | Re : pb VBA excel pilotage de fenêtre

lermite222

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

jeudi 19 juin 2008 à 11:34:16 | Re : pb VBA excel pilotage de fenêtre

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

jeudi 19 juin 2008 à 11:38:13 | Re : pb VBA excel pilotage de fenêtre

rosbeef87100

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

jeudi 19 juin 2008 à 11:57:06 | Re : pb VBA excel pilotage de fenêtre

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


1 2

Cette discussion est classé dans : vba, fonction, excel, fenêtre, essayé


Répondre à ce message

Sujets en rapport avec ce message

Excel (VBA): Création d'une fonction et recalcule automatique [ par FPatrick ] Bonjour,Je crais une fonction toto comme suit: Function toto(Nbt as integer) as long   Toto = Cells(1,1).value * Cells(2,1) * NbtEnd functionDans une Passage fonction Excel dans Function VBA [ par naturel45 ] Bonsoir,je cherche à passer en paramètre une fonction logique Excel dans une function perso;Sous Excel;   MaFunction(A1:A9;OU(B1;C1))MaFunction(Plage [excel] fonction VBA [ par Liro ] Bonsoir,Je souhaite écrire dans une cellule une formule du type:ActiveCell.Formula = "=SOMME(A2:" & ActiveCell.Offset(1, 0) & ")"Mais la syntaxe n'est [VBA Excel] besoin d'aide sur une macro [ par Nyck0las ] Bonjour,je suis débutant en VBA et j'aurais besoin d'un peu d'aide sur une macro que j'essaie de faire.Je souhaiterais faire une fonction prenant en a VBA Excel - ActiveWorkbook.Protect [ par JM247L ] Bonsoir,Sous VBA, la fonction Excel "ActiveWorkbook.Protect" est une bascule dans la mesure ou si le fichier est protégé, l'exécution de cette fonctio fonction recherche excel vba [ par chaudier37 ] Bonjouril y a quelques années, j'ai fait un travail par fonction excel avec la fonction recherche. j'avais un ordinateur conçu de telle manière que j' Fonction Excel dans VBA [ par InformatiqueStein ] Bonjour, J'ai écris une subroutine permettant d'écrire dans une cellule d'une feuille d'Excel une fonction.Dans ma subroutine, voici ce qui est écrit:


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.