Pb application goto reference

F

franck71

Guest
Bonjour à toutes et à tous

J'ai fait un super truc chez moi sur Excel, mais, j'ai un problème en le lançant au boulot alors qu'il fonctionnait parfaitement chez moi.


Comme dans le fichier ci-joint, quand je lance une macro avec le bouton nouvelle ligne, l'USF est bien lancé, mais quand je choisi dans l'USF, il lance ma macro mais bug dessus. Alors que si je lance la macro toute seule (ctrl+i), elle se lance correctement. Il me mets run time error '1004' method 'got' of object'_apllication failed.

Par ailleurs, il y a un problème de tri. Je ne sais pas pourquoi, mais il ne me fait pas un tri par nom de fournisseur et je ne sais pas comment lui dire de toujours classer par la colonne C. Mais il le faisait correctement chez moi. C'est étrange!

Je vous remercie d'avance [file name=Fichier1.zip size=33277]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Fichier1.zip[/file]
 

Pièces jointes

  • Fichier1.zip
    12.8 KB · Affichages: 23
  • Fichier1.zip
    12.8 KB · Affichages: 26
  • Fichier1.zip
    12.8 KB · Affichages: 25

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Franck, bonjour le forum,

J'ai testé ton fichier sous Windows XP familial et Excel 2000 et je n'ai eu aucun bug ni au niveau du lancement de la macro par raccourci ni au niveau du tri par ordre alphabétique sur la colonne C...
 

franck70

XLDnaute Junior
Merci.

Par contre, pour le tri, je crois que'il faudrait que j'indique de faire un tri par la colonne C, mais je n'y arrive pas. Il faut soit rester complètement en relatif, soit lui indiquer une cellule, comme ici:

Selection.Sort Key1:=Range('D11'), ...pour l'absolu
Selection.Sort Key1:=ActiveCell, ... pour le relatif

Je crois que mon activecell change de colonne selon les versions d'Excel, d'où la nécessité de lui indiquer la bonne colonne, sachant que le numéro de ligne va changer puisque j'insère des lignes!

@+
 

Hellboy

XLDnaute Accro
re a tous et a Frank70 qui rajeunis de minute en minute ??

Merci pourquoi, il y a quelque chose qui a fonctionné ???????

Si oui, précise le, ça va être utilie pas juste pour toi, mais pour les millons d'utilisateur qui vont vouloir visualiser ce post( peut être un peu optimiste avec ce nombre !!)
 

franck70

XLDnaute Junior
Le merci, c'était pour avoir pris la peine de me répondre :(
Je ne suis pas au boulot, donc je ne peux pas tester la solution pour l'instant
Quant au rajeunissement, le 71, c'était au boulot car je me suis mis en tant qu'invité, alors que chez moi, j'ai le mot de passe pour...être moi-même!!! Je précise que 70, c'est pour la haute-saone et pas mon age!!!!!
De toute façon, pour l'instant, je n'ai pas de solution pour le problème du tri, qui ne fonctionne pas chez moi non plus. Quand au lancement de la macro, je vous dit si ça marche demain.

Bonne nuit les petits ;)
 
F

franck71

Guest
Bonjour à tous
En changeant la place du unload me, ça ne change rien.
Par contre, j'ai suivi ton conseil en me disant que le problème venait du application.goto

J'ai remplacé le
Application.goto reference ('cptes_tele')
par
Range('cptes_tele').Select
Et ça fonctionne!!!
Alors pourquoi ça fonctionne ailleurs et pas à mon bureau, mystère!!!
Mais donc la solution est de mettre range ('XXX').select

Pour le tri, je n'ai pas encore trouvé. Je vais voir si ça peut être le même problème.
 
F

franck71

Guest
Et non, le problème reste en suspend. Il ne doit pas sélectionner la colonne C et je ne sais pas comment le lui dire. Il met toujours:

Selection.Sort Key1:=ActiveCell, Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

La colonne C n'apparait nulle part et je ne peux pas mettre de valeur absolue puisque la ligne change en fonciton du nombre de ligne que je vais insérer avant.
 

Hellboy

XLDnaute Accro
Bonjour

Je ne suis pas sure si j,ai bien compris, mais regarde ce que j,ai fais ici avec la macro1 et dis moi si c'est ce qu'il faut que ça accomplisse. je manque de temps pour les commentaires, mais si tu en as de besoin, tu me le dis. Je te reviendrai la dessus demain.

Sub Macro1()
Dim lngCountLigne        As Long, lngLigne        As Long
'
' Macro1 Macro
' Macro enregistrée le 11/08/2005 par Menneret
'
' Touche de raccourci du clavier: Ctrl+i
'
        Application.Goto Reference:='cptes_tele'
       
With Selection
                lngCountLigne = .Count
                lngLigne = .Row
                .Orientation = 0
                .AddIndent =
False
                .ShrinkToFit =
False
                .MergeCells =
False
       
End With
        ActiveCell.Offset(1, 0).Range('A1').Select
        Selection.EntireRow.Insert
        ActiveCell.Offset(0, 1).Range('A1').Select
        noms_tele = InputBox('Entrez le nom du fournisseur')
        ActiveCell.FormulaR1C1 = noms_tele
        ActiveCell.Offset(-1, 6).Range('A1').Select
        Selection.Copy
        ActiveCell.Offset(1, 0).Range('A1').Select
        Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
               
False, Transpose:=False
        ActiveCell.Offset(-1, 2).Range('A1:E1').Select
        Application.CutCopyMode =
False
        Selection.Copy
        ActiveCell.Offset(1, 0).Range('A1:E1').Select
        Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
               
False, Transpose:=False
        ActiveSheet.Paste
        Application.CutCopyMode =
False
       
'Application.Goto Reference:='tab_tele'
        Range(Cells(lngLigne, 3), Cells(lngLigne + lngCountLigne, 11)) _
                .Sort Key1:=Cells(lngLigne, 3), Order1:=xlAscending, Header:=xlGuess, _
                            OrderCustom:=1, MatchCase:=
False, Orientation:=xlTopToBottom
        ActiveCell.Offset(1, 0).Range('A1').Activate
        Application.Goto Reference:='cptes_tele'
       
With Selection
                .Orientation = 0
                .AddIndent =
False
                .ShrinkToFit =
False
                .MergeCells =
True
       
End With
       
End Sub
 

franck70

XLDnaute Junior
Bonjour à tous

Je te remercie, ça semble fonctionner. Je suis pas au boulot, mais chez moi, ça marche.
Par contre, je dois reconnaitre que je n'ai pas tout compris. C'est quand même du high level!
Si j'ai bien compris, je commence par supprimer ça:
'Application.Goto Reference:='tab_tele'
Selection.Sort Key1:=ActiveCell

c'est à dire que je ne sélectionne plus la partie du tableau à trier.
Ensuite, je mets:

Range(Cells(lngLigne, 3), Cells(lngLigne + lngCountLigne, 11)) _
.Sort Key1:=Cells(lngLigne, 3),

C'est là que je suis pas trop. En fait, je ne connais pas Ingligne. Si tu pouvais me traduire ce que ça veut dire, je te serais vraiment reconnaissant. Le 3, je comprends bien que c'est la 3ème colonne, celle qui est sélectionnée. Le 11, ça pourrait être le nombre de colonne sur lequel s'effectue le trie, sauf qu'il y en a 14 (3 sont masquées). Mais peut-être que tu ne les avais pas vu, auquel cas je comprends d'où viens le 11!
Reste que je ne sais pas ce qu'est Ingligne et lngCountLigne.

Comme tu te leveras quand je vais me coucher, je te souhaite un bon réveil et encore merci de me résoudre tous mes petits problèmes
:)
 

Hellboy

XLDnaute Accro
Bon Matin Frank70

Je fais vite, mais j'essaie d'être clair.

Pour la première partie de ton observation, je répond Oui.

Pour la deuxième partie Oui aussi.

Voici comment j'ai approché le problème:

J'ai utilisé un type d'outil de programmation que l'on appel des variables (Dim lngCountLigne As Long, lngLigne As Long
). Voit des Variables un peu comme une Valise que l'on utilise pour transporter des choses lorsque l'on se déplace. Si tu va en voyage en pays chaud, tu apporte du linge léger. Dans ton énoncé j'ai utilisé 2 variables pour transporter durant l'exécution de la macro de l'information que j'ai besoin lors du trie.

Comment j'ai fais pour avoir la bonne information et a quel moment ?

Lorsque tu sélectionne au début de ta macro, la région qui contient l'entëte de tes lignes de données (ex:Application.Goto Reference:='cptes_tele' With Selection ...), étant donnée que tu as utilisé la fusion de plusieurs cellules pour afficher une seule information, je me suis servit de cette information pour:

- Connaître la ligne de départ de ton fusionnement:
lngLigne = .Row
- Connaître le nombre de ligne que contien cette fusion
lngCountLigne = .Count


Cette information je m'en sert lors de mon arrivé au point chaud, c-a-d le Trie.

Je te donne la suite dans 2 heures d'ici, je dois me préparer pour le boulot. je te reviens avec la conclusion des information

a+
 

Discussions similaires

Réponses
1
Affichages
667

Statistiques des forums

Discussions
312 837
Messages
2 092 660
Membres
105 482
dernier inscrit
Eric.FKF