Bug Excel? Macro bouton

Bonjour à tous!

Voilà, dans un fichier à deux onglets je me met sur l'onglet "base" et crée une macro. La macro fonctionne à merveille. Maintenant, je veux la mettre en bouton sur mon premier onglet nommé "macro". Je rajoute à mes lignes de code tout en haut "Sheets("Base").Select". Mais là il bug des la premiére ligne.

En gros:

La macro débutant par

Private Sub Filtreélaboré

Rows("1:1").Select

Selection.Copy

Rows("2:2").Select

Selection.Insert Shift:=xlDown

Application.CutCopyMode = False

Selection.Insert Shift:=xlDown

Range("BL2").Select

ActiveCell.FormulaR1C1 = ">5"

Fonctionne tres bien quand je suis sur l'onglet "base".

Mais la macro

Private Sub CommandButton1_Click()

Sheets("Base").Select

Rows("1:1").Select

Selection.Copy

Rows("2:2").Select

Selection.Insert Shift:=xlDown

Application.CutCopyMode = False

Selection.Insert Shift:=xlDown

Range("BL2").Select

ActiveCell.FormulaR1C1 = ">5"

Sur le premier onglet bug des la ligne "Rows("1:1").Select".

Pouvez-vous me dire pourquoi et comment modifier pour qu'elle fonctionne?

Merci d'avance

Bonjour,

Rows(1).Copy

devrait suffire, le .select n'est pas utile

Amicalement

Claude

6pour-elsouba.xlsm (91.96 Ko)

Bonjour,

Maintenant, je veux la mettre en bouton sur mon premier onglet nommé "macro".

Tes macros sont positionnées où dans le fichier ?

Dans l'onglet "macro", "base" ou ailleurs ??

Fais plutôt ceci :

  • mets la macro "Private Sub Filtreélaboré" dans un module en VBA
  • dessine ton bouton et associe le à cette macro.

Ta macro :

Private Sub Filtreélaboré()
Sheets("Base").Select
Rows("1:1").Copy
Rows("2:2").Insert Shift:=xlDown
Application.CutCopyMode = False
Range("BL2").FormulaR1C1 = ">5"
...
End Sub

Dan

capture capture

J'étais sur l'onglet "base" quand j'ai crée ma macro. Etant nulle en programmation, j'ai agis mannuellement (j'ai fait le filtre élabroré que la macro devra refaire sans taper de ligne de code). Ensuite j'ai crée un bouton sur l'onglet "macro" et j'ai copié mes lignes de code ainsi crée et collé sur l'encoddage du bouton.

J'ai testée, ça ne fonctionnait pas. Ayant changé d'onglet j'ai alors pensée à ajouter la fameuse ligne "Sheets("Base").Select" mais ça ne marche toujours pas...

Dubois => Même avec .copy aulieu de .select ça ne fonctionne pas.

Merci

j'ai dis

Rows(1).Copy

En fait en relançant, avec "Rows("1:1").Copy" ça débug cette ligne pour rebugger à la suivante... à "Rows("2:2").Insert Shift:=xlDown"

Mais même là il m'a fallu couper le debbugueur et le relancer. En changeant comme tu le veux la ligne reste encore surlignée en jaune.

Alors que si je lance le programme de la feuille "base" en allant sur outils => Macro => Macros => "Filtreélaborée" => Exécuter il ne bug pas!

re,

Ce que je t'ai proposé fonctionne mais le tout est de voir où est placée la macro en question.

Place ton fichier ici au format XLS (excel 2003) ou alors si tu ne veux pas donne les infos suivantes :

  • Ta macro est située où dans ton fichier ??
  • Montre le code complet ici

A te relire

Dan

Edit Dan :

Ensuite j'ai crée un bouton sur l'onglet "macro" et j'ai copié mes lignes de code ainsi crée et collé sur l'encoddage du bouton.

Il ne faut copier les lignes de code !. Simplement lorsque tu crées le bouton (par barre d'outils Formulaire), fais clique droite puis choisis "affecter une macro"

Je créais mes boutons par "boîte à outils contrôle", et non par formulaires d'où le cumul de mes difficultés. Donc, par la méthode outils formulaire ça va drôlement mieux!

Quoi que la petite blague, par cette méthode la macro fut appliqué à TOUT mes onglets

Je pense qu'en ajoutant la fameuse ligne ça ira mieux.

Merci pour votre aide!

bonjour,

Les Private macros sont un peu caractérielles et pas vraiment destinées à des débutants.

Tu aurais du conserver ta macro enregistrée (dans Module1) et appeler ta macro depuis le bouton.

Private Sub CommandButton1_Click()

call Macro1

End Sub

mais tu ne peux surtout pas l'appeler Private Macro1 car la

Private Sub CommandButton1_Click ne la verrait pas...

Au pire si tu tiens vraiment à mettre tout le fourbi dans la Private Sub CommandButton1_Click

il faut spécifier à chaque fois :

Sheets("Base").Rows("1:1").Copy

Sheets("Base").Insert Shift:=xlDown

Application.CutCopyMode = False

Sheets("Base").Range("BL2").FormulaR1C1 = ">5"

End Sub

Bon... mais c'est vraiment du code un peu "bourrin" !

L'idéal c'est de faire un call depuis ton

Private Sub CommandButton1_Click

vers Sub FiltreElabore qui se trouve dans Module1 (Pas Private hein ! Et sans accent de préférence les noms de macros...)

Private Sub CommandButton1_Click

call FiltreElabore

End Sub

Après c'est une histoire de réglage, Select, pas select, ça se discute...

La règle veut qu'on ne sélecte pas sauf si c'est vraiment indispensable.

On va dire que c'est indispensable et garder ta macro enregistré et ça marchera ou alors en mieux façon Nad-Dan :

Sub FiltreElabore()

Sheets("Base").Select

Rows("1:1").Copy

Rows("2:2").Insert Shift:=xlDown

Application.CutCopyMode = False

Range("BL2").FormulaR1C1 = ">5"

End Sub

Euh... C'est clair ?

A+

Avec "Formulaire" ça allai beaucoup mieux, mais merci pour tes précisions galopin je comprend un peu mieux le systéme...

Bonjour,

Oui sauf que "Formulaire" est en voie de disparition... Pourquoi pas revenir à DBase (ou Multiplan )

2003 oui... mais on est en 2010... Dans toutes les versions ultérieures tu utiliseras la boite d'outils Contrôles alors autant apprendre tout de suite avec les outils modernes !

A+

galopin01 a écrit :

Bonjour,

Oui sauf que "Formulaire" est en voie de disparition... Pourquoi pas revenir à DBase (ou Multiplan )

2003 oui... mais on est en 2010... Dans toutes les versions ultérieures tu utiliseras la boite d'outils Contrôles alors autant apprendre tout de suite avec les outils modernes !

A+

Oui, d'où mes remerciements face à tes explications qui me permettent d'envisager les autres solutions

3election.xlsm (30.20 Ko)
Rechercher des sujets similaires à "bug macro bouton"