|
Trouver une ressource
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)
Informations & options pour cette discussion
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
|
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
|
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
|
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
|
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
|
|
|
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:
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|