Rechercher : dans
Par :

Macro insertion ligne Excel, macro ne suit pa

Dernière réponse le 6 fév 2009 à 15:31:38 banbiou, le 12 jan 2009 à 10:58:47 
 Signaler ce message aux modérateurs

Bonjour,

Meilleurs voeux à tous
*.....

Alors petite question: j'ai realisé un fichier Excel avec Macro. Mais mon problème est qu'il faut que je change les données (cellules) da ma macro à chaque fois que j'insere une ligne dans mon fichier Excel.
Ex.:

Sub macro3()

With bouton3 = Checked
Rows("30:33").EntireRow.Hidden = False
End With
End Sub


si j'insere la ligne 20, ma macro sera décaler d'une ligne.....
Il a t'il une fonction qui permet de synchroniser ma macro en tps réel ??? Permet de suivre mes modifications Excel...

Vous me suivez...lol. Je m'exprime mal peu etre, si vous avez des questions je vous repondrais avec plaisir.

Merci à toi et toi et toi et toi et..................

Configuration: Windows XP
Internet Explorer 6.0

1

herod1983, le 12 jan 2009 à 11:16:25

Salut

Je ne vois pas très bien ce que tu veux faire, en gros tu veux insérer une ligne quand il y a une certaine condition laquelle? mais tu veux pouvoir modifié à chaque fois à quelle endroit tu veux l'insérer c'est sa?

Intel Pentium 4 2Core 3,6GO 
C.M. ASUS P5GDC Deluxe
Chipset Intel Grantsdale I915 Socket LGA 775
2048MO DDR2 Dual Channel OCZ Gold
C.G. ATI 3850HD 256MO 400MHZ
3 DD Maxtor
XP Service Pack 3
Mozilla 3.0.3

Répondre à herod1983

2

herod1983, le 12 jan 2009 à 11:26:32

Si c'est bien sa je te propose cela:

Il te faudra juste double cliquer sur la ligne concernée pour que cela en insère une.

A mettre dans: Private Sub Worksheet_BeforeDoubleClick

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Call Macro1(Target)

End Sub


A mettre dans une macro:

Sub Macro1(Target)

Set i = Target

Range("A" & i.Row).Insert


End Sub

Intel Pentium 4 2Core 3,6GO 
C.M. ASUS P5GDC Deluxe
Chipset Intel Grantsdale I915 Socket LGA 775
2048MO DDR2 Dual Channel OCZ Gold
C.G. ATI 3850HD 256MO 400MHZ
3 DD Maxtor
XP Service Pack 3
Mozilla 3.0.3

Répondre à herod1983

5

banbiou, le 12 jan 2009 à 14:12:18

Une idée herod1983...?

Répondre à banbiou

3

banbiou, le 12 jan 2009 à 11:39:08

En faite, lorsque je modifie mon Excel (ce qui arrive souvent). Lorsque, par exemple, j'ajoute une ligne en Excel. Ma Macro n'est plus à jour.

Répondre à banbiou

4

banbiou, le 12 jan 2009 à 12:54:11

Alors encore plus d'explications...lol

à la ligne 30 j'ai un bouton "3". A ce bouton j'ai accroché une macro pour que celle ci démasque trois lignes :

Sub macro3()

With bouton3 = Checked
Rows("30:33").EntireRow.Hidden = False
End With
End Sub


mais maintenant je veux ajouter une ligne supplémentaire au debut de ma page une ligne 0.
Hors, si j'ajoute une ligne, ma macro va etre décalé elle aussi d'une ligne et ne va pas demasquer la ligne 30, 31, 32, 33 mais les lignes 30+1, 31+1, 32+1, 33+1.... (décalage d'une ligne !!! )

je rajoute souvent des ligne supplementaire, cellule ou colonne... et je ne veux pas changer ma macro a chaque fois, surtout qu'actuellement à la moitier de mon Excel, je suis à une 20aine de macro de ce type....

Voila mon gros souci, y a t'il une fonction qui permettre de suivre mes macro par rapport aux ligne colonne ou cellule que je rajoute..?

Merci

Répondre à banbiou

6

eriiic, le 12 jan 2009 à 16:54:10

Bonjour,

le plus simple est de nommer la plage concernée (par exemple plage3) et d'utiliser ce nom dans la macro :
Range("plage3").EntireRow.Hidden = False

Le nom d'adaptera tout seul en fonction des ajout/suppression de lignes et tu peux redéfinir la plage en cas d'évolution de ta feuille sans retoucher le code.

eric

Répondre à eriiic

7

eriiic, le 12 jan 2009 à 16:54:18

Bonjour,

le plus simple est de nommer la plage concernée (par exemple plage3) et d'utiliser ce nom dans la macro :
Range("plage3").EntireRow.Hidden = False

Le nom d'adaptera tout seul en fonction des ajout/suppression de lignes et tu peux redéfinir la plage en cas d'évolution de ta feuille sans retoucher le code.

eric

Répondre à eriiic

8

banbiou, le 13 jan 2009 à 01:10:21

En gros si je te comprend bien eric:

comme ma macro est associé à un bouton, "bouton3", il me sufirai de dire au début de ma macro:

Range("bouton3").EntireRow.Hidden = False ??? c'est ca?

je peux meme je pense nommer tous mes boutons "bouton3" pour que cette ligne d'instruction ce généralise à toutes mes macro de ce type..?

En tout cas, en attentan des news de ta part, je te remerci et je te dirai si cela marche demain car je vais au dodo...

Répondre à banbiou

9

eriiic, le 13 jan 2009 à 07:00:05

Bonjour,

Non, il faut que tu nommes ta plage sur la feuille.
Sélectionner tes 3 lignes et menu 'insertion / nom / definir...'

eric

Répondre à eriiic

10

banbiou, le 13 jan 2009 à 10:04:23

Slt,

alors j'ai bien essayé ta proposition mais cela n'a pas fait l'effet que j'attandais...lol
pour plus de compréhension, j'envoi un "exemple" de mon .xls

ajoute une ligne supplémentaire au début de ma page, joue avec les macros et tu comprendras tout vite ce que j'ai voulu dire lol.

voila:
http://www.cijoint.fr/cjlink.php?file=cj200901/cijLIu5ISQ.xls

merci d'avance.

Répondre à banbiou

15

eriiic, le 13 jan 2009 à 23:29:18

Bonsoir,

ben j'ai modifié et 'joué' comme tu dis et je ne vois pas bien où ça cloche par rapport à ce que tu demandais (?)
Soit tu as mal expliqué, soit je n'ai rien compris, soit tu n'as pas compris mon explication (sommaire...)
Je n'ai modifié que pour les boutons en lignes 29 et 33 :
classeur1.xls
Et si la ligne insérée est entre 30:33 la plage s'aggrandi en 30:34

Mais pour faire plus joli et plus ergonomique utilise le même bouton pour déplier et replier (là celui en 33 ne sert plus à rien)
eric

Répondre à eriiic

16

banbiou, le 13 jan 2009 à 23:44:45

Bah voila, j'avais ma utilisé ton explication avec la "plage3"...
j'avais juste mis mes macro dans cette plage.
Et effectivement, ca fait 1 mois que je "joue" avec les macro Excel...

Et un gros merci pour ta trouvail, ton aide et aussi l'ergonomie de mon bouton "2 en 1", j'avais essayé de trouver qque chose mais j'avais pas trouvé...^^

En tout cas un GRAND MERCI.

PS: et si tu es fort en dyndns avec pi3web... je veux bien un coup de main pr configurer mon log. pi3web... lol

Répondre à banbiou

17

eriiic, le 14 jan 2009 à 00:24:31

Je ne connais pas pi3web mais si c'est pour te faire un serveur FTP avec dyndns tu peux t'inspirer de ça :
FTP sur micro.pdf
Tout est bien expliqué point par point
eric

Répondre à eriiic

18

banbiou, le 14 jan 2009 à 08:31:29

Merci eric,

Répondre à banbiou

24

banbiou, le 5 fév 2009 à 16:50:17

Slt, j'espere que tu vas bien eric.

autre question et donc autre problème pour cette application... ;(

Tout fonctionne mais lorsque je protège ma page, les macros ne fonctionnent pas.
J'ai bien enlevé le vérrouillage de ma macro :
clic droit ==> format de control ==> j'ai décoché "vérrouillé" et "texte verrouillé"

Mais je crois que cela ne suffi pas car le message d'erreur est :
"erreur d'execution '1004'
impossible de définir la propriété Hidden de la classe Range"

Peux tu m'aider..?


PS: Si qqun d'autre sait... je prive personne d'exprimer son savoir.. ;)

Répondre à banbiou

25

eriiic, le 5 fév 2009 à 19:22:40

Bonsoir,

Essaie en protègeant ta feuille par macro (dans workbook_open par exemple) et dans le .protect ajoute le parametre UserInterfaceOnly=true
eric

Répondre à eriiic

26

banbiou, le 6 fév 2009 à 12:57:07

ActiveSheet.Unprotect ("m d pass")
Selection.EntireRow.Hidden = True

' mes instructions

ActiveSheet.Protect ("m d pass")

j'ai trouvé cela et ca fonctionne pas mal... j'ai regarder ce que tu m'as dit, mais j'ai pas su l'appliquer (je ne sais pas ou se trouve tous ces parametres).
En tout cas merci,
Flo

Répondre à banbiou

27

 banbiou, le 6 fév 2009 à 15:31:38

J'ai même enlevé le : Selection.EntireRow.Hidden = True
++

Répondre à banbiou

11

herod1983, le 13 jan 2009 à 10:52:32

Salut

Désolé pour hier j'ai pas le net a mon boulot, j'ai vue ton .xls effectivement, pour que chaque ligne cachée garde leur numéro de ligne quand tu en ajoute une, il faudrait faire une macro qui déplace tous de +1, mais vu le nombre de ligne cachée que tu as, c'est plutôt ardue.
Alors peut-être si tu prenais le problème d'une autre manière, à ton stade est-il encore possible qu'au lieu d'insérer des lignes, que tu ajoutes tous simplement tes donnés au fur et à mesure. Intel Pentium 4 2Core 3,6GO 
C.M. ASUS P5GDC Deluxe
Chipset Intel Grantsdale I915 Socket LGA 775
2048MO DDR2 Dual Channel OCZ Gold
C.G. ATI 3850HD 256MO 400MHZ
3 DD Maxtor
XP Service Pack 3
Mozilla 3.0.3

Répondre à herod1983

12

banbiou, le 13 jan 2009 à 14:34:34

En faite, j'ai ma liste principale d'opérations et lorsque je clic sur le "+" c'est pour avoir le détail (les sous opérations).
ces opérations sont dans un ordre précis. Mais il se peut que j''en ai oubliées une ou deux par ci par là donc rajouter des lignes supplémentaires... tu vois ce que je veux dire ?
merci

Répondre à banbiou

13

herod1983, le 13 jan 2009 à 20:54:15

Ok je vais me pencher sur le problème je te tiens au courant Intel Pentium 4 2Core 3,6GO 
C.M. ASUS P5GDC Deluxe
Chipset Intel Grantsdale I915 Socket LGA 775
2048MO DDR2 Dual Channel OCZ Gold
C.G. ATI 3850HD 256MO 400MHZ
3 DD Maxtor
XP Service Pack 3
Mozilla 3.0.3

Répondre à herod1983

14

banbiou, le 13 jan 2009 à 21:30:55

Merci herod

Répondre à banbiou

19

herod1983, le 15 jan 2009 à 16:37:56

Voila c'est fait

voici le lien http://herod1983.hbg.fr/cijLIu5ISQ.xls

Donc pour garder les mêmes lignes qui se masque et se dévoile quand tu en insère une j'ai procédé de la façon suivante:

- En premier j'ai déjà effacé tes boutons car ce n'était pas des CommandButton et pour effectuer l'évènement Click
c'était plus problématique (tu les trouves dans affichage=>barre d'outil=>boite a outil de contrôle)

- Ensuite j'ai pris les coordonnées ligne du bouton "+", vu qu'ils étaient à chaque fois au-dessus des lignes à démasquer.
En gros j'ai dis si le bouton est sur cette ligne alors les lignes en dessous (en fonction du nombre de ligne que tu veux masquer) se démasque, pareil pour le masquage

il y a une macro pour chaque nombre de ligne à masquer (en l'occurrence pour toi 2,3,5,8,9), si tu veux créer d'autre boutons qui masque un autre nombre de ligne, tu n'aura qu'à copier une macro déjà faite et changer à
+2 +3 ou +4 et mettre +6 pour 6ligne +7 etc.

Je t'ai encore expliquer dans les macro la marche à suivre

Voila j'espère que je bien été explicatif, de toute façon si il y a quelque chose qui cloche tu peux toujours m'en faire part.

Intel Pentium 4 2Core 3,6GO 
C.M. ASUS P5GDC Deluxe
Chipset Intel Grantsdale I915 Socket LGA 775
2048MO DDR2 Dual Channel OCZ Gold
C.G. ATI 3850HD 256MO 400MHZ
3 DD Maxtor
XP Service Pack 3
Mozilla 3.0.3

Répondre à herod1983

20

banbiou, le 15 jan 2009 à 19:47:14

Merci herod, tu as aussi réussi comme eric.
il y a plus de programmation dans ta méthode par rapport a eric.
j'aime bien les deux... ^^
en tout cas j'ai encore bcp de progres a faire...
tu sais pas où je peux apprendre des "formules types" : celle a savoir obligatoirement...lol
merci en tout cas.
c'est bien gentil de ta part.

Répondre à banbiou

22

herod1983, le 15 jan 2009 à 22:36:42

Il y a plus de code tous simplement au cas ou si il y a un problème le code est plus robuste.

Sinon pour des formules type il y a le tuto:
de développez.com
de info3000.com
de vbfrance.com
et de cathyastuce.com

Tous mon pas mal aidé à mes débuts j'ai aussi acheter le livre ExcelVBA pour les nuls qui est vraiment très bien pour les débutants.

Ca fait 1 an que je m'y suis mis et je commence juste à effleurer la partie émergé de l'iceberg lol
En tous cas le tous pour apprendre vite c'est de créer programme sur programme, pour acquérir la syntaxe du code, d'être patient c'est le moins qu'on puisse dire et surtout vive le net et les forums sans cela sa prendrait deux fois plus de temps.

malgré tous quand tu commence à connaître tu t'aperçois de la montagne de chose que tu peux faire et la tu kiffe.

Voila Bonne Continuation
a+
Intel Pentium 4 2Core 3,6GO 
C.M. ASUS P5GDC Deluxe
Chipset Intel Grantsdale I915 Socket LGA 775
2048MO DDR2 Dual Channel OCZ Gold
C.G. ATI 3850HD 256MO 400MHZ
3 DD Maxtor
XP Service Pack 3
Mozilla 3.0.3

Répondre à herod1983

23

banbiou, le 16 jan 2009 à 18:12:57

Merci mec, tu as bien raison...
a+ pour un prochain cour de VBA...

Répondre à banbiou