Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

premières macros... à l'aide!!!

4 réponses
Avatar
Grégory DELBOE
Bonsoir à vous!

Je cherche à réaliser mes premières macros... enfin je veux dire une où
j'essaye de comprendre ce que je fais, ou plutôt ce que je fais écrire.

Je suis sur la feuille 1 du fichier:
original: http://cjoint.com/?mhxkspElF8
J'ai donc tenté d'insérer une ligne en fusionnant la cellule du dessus dans
la première colonne (A), et en reproduisant et en incrémentant les cellules
juste au-dessus en B, C, D:

ce qui donne avec mes interprétations (vous me dites si je me trompe):

Sub ajoutseance()
'
' ajoutseance Macro
' Macro enregistrée le 07/12/2007 par GREGORY DELBOE
'

'
Rows("11:11").Select 'selectionne ligne 11
Selection.Insert Shift:=xlDown 'insert une ligne
Range("A3:A11").Select 'selectionne cell A3 à A11
Selection.Merge 'fuisonne
Range("B10:D10").Select
Selection.AutoFill Destination:=Range("B10:D11"), Type:=xlFillDefault
'reproduis la mise en forme
Range("B10:D11").Select

End Sub

bizarrement, lorsque je repars sur mon fichier original et que je lance la
macro, voici le résulltat:

raté: http://cjoint.com/?mhxiPg4VrW

1) Que se passe t-il? Est-ce la cellule deja fusionnée qui me casse les
pieds? Pourquoi excell ne reproduit-il pas ce qu'il a su faire manuellement
la première fois?
2) Comment associer une macro à un clic dans une cellule?
3) Si c'est possible, comment lui indiquer que la macro d'ajout de ligne
devra se faire au dessus de la cellule source de cette macro? (cas de
plusieurs possibilités de lignes à insérer à des endroits différents)

Merci pour le temps que vous passerez à déchiffrer ma demande, et à y
répondre (Mais si vous êtes arrivé là, vous avez déjà du courage!!!).

Grégory

4 réponses

Avatar
FFO
Salut Grégory

Si tu te lances dans l'aventure des Macros fuis les cellules fusionnées
C'est la plaie pour leur fonctionnement correct
Privilégie à tout prix le traitement de cellules non fusionnées quitte à les
fusionner en tout fin de traitement

Donc pour ce qui concerne ton code l'idéal aurait été de défusionner toutes
les cellules avant de passer ta macro et de refusionner aprés

Toute fois en maintenant la fusion j'ai trouvé la solution suivante :

Remplace les lignes :

Rows("11:11").Select 'selectionne ligne 11
Selection.Insert Shift:=xlDown 'insert une ligne


par les lignes :

Range("B11:D11").Select
Selection.EntireRow.Insert

ce qui donne :

Range("B11:D11").Select
Selection.EntireRow.Insert
Range("A3:A11").Select 'selectionne cell A3 à A11
Selection.Merge 'fuisonne
Range("B10:D10").Select
Selection.AutoFill Destination:=Range("B10:D11"), Type:=xlFillDefault
'reproduis la mise en forme
Range("B10:D11").Select

Si tu souhaites bénéficier de ce code à différents endroits de tes colonnes
B/C/D je te prose ce code :

ActiveCell.EntireRow.Insert
Range(ActiveCell.End(xlToLeft).Address & ":A" & ActiveCell.Row).Merge
'fuisonne
Range("B" & ActiveCell.Row - 1 & ":D" & ActiveCell.Row - 1).AutoFill
Destination:=Range("B" & ActiveCell.Row - 1 & ":D" & ActiveCell.Row),
Type:=xlFillDefault 'reproduis la mise en forme
Range("B" & ActiveCell.Row - 1 & ":D" & ActiveCell.Row).Activate

Il ne te restera plus qu'à sélectionner la cellule où tu souhaites réaliser
l'insertion et d'activer ce code

Si tu souhaites par click déclencher cette insertion dans le VBA de la
feuille (click droit sur le nom de l'onglet et visualiser le code) tu mets ce
code :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Then
Run ("Macro1")
End If
End Sub

Actualise ("Macro1") du nom de la macro qui porte le code précédent

ferme l'éditeur de macro et double click sur la cellule où tu souhaites
ajouter une ligne

Je pense qu'avec tout celà tu devrait être satisfait

Dis moi !!!!



Bonsoir à vous!

Je cherche à réaliser mes premières macros... enfin je veux dire une où
j'essaye de comprendre ce que je fais, ou plutôt ce que je fais écrire.

Je suis sur la feuille 1 du fichier:
original: http://cjoint.com/?mhxkspElF8
J'ai donc tenté d'insérer une ligne en fusionnant la cellule du dessus dans
la première colonne (A), et en reproduisant et en incrémentant les cellules
juste au-dessus en B, C, D:

ce qui donne avec mes interprétations (vous me dites si je me trompe):

Sub ajoutseance()
'
' ajoutseance Macro
' Macro enregistrée le 07/12/2007 par GREGORY DELBOE
'

'
Rows("11:11").Select 'selectionne ligne 11
Selection.Insert Shift:=xlDown 'insert une ligne
Range("A3:A11").Select 'selectionne cell A3 à A11
Selection.Merge 'fuisonne
Range("B10:D10").Select
Selection.AutoFill Destination:=Range("B10:D11"), Type:=xlFillDefault
'reproduis la mise en forme
Range("B10:D11").Select

End Sub

bizarrement, lorsque je repars sur mon fichier original et que je lance la
macro, voici le résulltat:

raté: http://cjoint.com/?mhxiPg4VrW

1) Que se passe t-il? Est-ce la cellule deja fusionnée qui me casse les
pieds? Pourquoi excell ne reproduit-il pas ce qu'il a su faire manuellement
la première fois?
2) Comment associer une macro à un clic dans une cellule?
3) Si c'est possible, comment lui indiquer que la macro d'ajout de ligne
devra se faire au dessus de la cellule source de cette macro? (cas de
plusieurs possibilités de lignes à insérer à des endroits différents)

Merci pour le temps que vous passerez à déchiffrer ma demande, et à y
répondre (Mais si vous êtes arrivé là, vous avez déjà du courage!!!).

Grégory





Avatar
Emma
Merci beaucoup pour ton investgissement!

Je suis en retard ce matin et suis frustré de ne pouvoir essayer ce matin.
Je te tiens au courant!

Merci encore

Grégory
Avatar
Emma
J'ai essayé ça et j'ai appris beaucoup.

Merci à toi

Grégory
Avatar
Emma
J'ai essayé ça et j'ai appris beaucoup.

Merci à toi... Je vais maintenant continuer mon projet sur cette feuille
afin de faire aboutir ce projet!

Grégory

"FFO" a écrit dans le message de
news:
Salut Grégory

Si tu te lances dans l'aventure des Macros fuis les cellules fusionnées
C'est la plaie pour leur fonctionnement correct
Privilégie à tout prix le traitement de cellules non fusionnées quitte à
les

fusionner en tout fin de traitement

Donc pour ce qui concerne ton code l'idéal aurait été de défusionner
toutes

les cellules avant de passer ta macro et de refusionner aprés

Toute fois en maintenant la fusion j'ai trouvé la solution suivante :

Remplace les lignes :

Rows("11:11").Select 'selectionne ligne 11
Selection.Insert Shift:=xlDown 'insert une ligne


par les lignes :

Range("B11:D11").Select
Selection.EntireRow.Insert

ce qui donne :

Range("B11:D11").Select
Selection.EntireRow.Insert
Range("A3:A11").Select 'selectionne cell A3 à A11
Selection.Merge 'fuisonne
Range("B10:D10").Select
Selection.AutoFill Destination:=Range("B10:D11"), Type:=xlFillDefault
'reproduis la mise en forme
Range("B10:D11").Select

Si tu souhaites bénéficier de ce code à différents endroits de tes
colonnes

B/C/D je te prose ce code :

ActiveCell.EntireRow.Insert
Range(ActiveCell.End(xlToLeft).Address & ":A" & ActiveCell.Row).Merge
'fuisonne
Range("B" & ActiveCell.Row - 1 & ":D" & ActiveCell.Row - 1).AutoFill
Destination:=Range("B" & ActiveCell.Row - 1 & ":D" & ActiveCell.Row),
Type:=xlFillDefault 'reproduis la mise en forme
Range("B" & ActiveCell.Row - 1 & ":D" & ActiveCell.Row).Activate

Il ne te restera plus qu'à sélectionner la cellule où tu souhaites
réaliser

l'insertion et d'activer ce code

Si tu souhaites par click déclencher cette insertion dans le VBA de la
feuille (click droit sur le nom de l'onglet et visualiser le code) tu mets
ce

code :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Then
Run ("Macro1")
End If
End Sub

Actualise ("Macro1") du nom de la macro qui porte le code précédent

ferme l'éditeur de macro et double click sur la cellule où tu souhaites
ajouter une ligne

Je pense qu'avec tout celà tu devrait être satisfait

Dis moi !!!!



Bonsoir à vous!

Je cherche à réaliser mes premières macros... enfin je veux dire une où
j'essaye de comprendre ce que je fais, ou plutôt ce que je fais écrire.

Je suis sur la feuille 1 du fichier:
original: http://cjoint.com/?mhxkspElF8
J'ai donc tenté d'insérer une ligne en fusionnant la cellule du dessus
dans


la première colonne (A), et en reproduisant et en incrémentant les
cellules


juste au-dessus en B, C, D:

ce qui donne avec mes interprétations (vous me dites si je me trompe):

Sub ajoutseance()
'
' ajoutseance Macro
' Macro enregistrée le 07/12/2007 par GREGORY DELBOE
'

'
Rows("11:11").Select 'selectionne ligne 11
Selection.Insert Shift:=xlDown 'insert une ligne
Range("A3:A11").Select 'selectionne cell A3 à A11
Selection.Merge 'fuisonne
Range("B10:D10").Select
Selection.AutoFill Destination:=Range("B10:D11"),
Type:=xlFillDefault


'reproduis la mise en forme
Range("B10:D11").Select

End Sub

bizarrement, lorsque je repars sur mon fichier original et que je lance
la


macro, voici le résulltat:

raté: http://cjoint.com/?mhxiPg4VrW

1) Que se passe t-il? Est-ce la cellule deja fusionnée qui me casse les
pieds? Pourquoi excell ne reproduit-il pas ce qu'il a su faire
manuellement


la première fois?
2) Comment associer une macro à un clic dans une cellule?
3) Si c'est possible, comment lui indiquer que la macro d'ajout de ligne
devra se faire au dessus de la cellule source de cette macro? (cas de
plusieurs possibilités de lignes à insérer à des endroits différents)

Merci pour le temps que vous passerez à déchiffrer ma demande, et à y
répondre (Mais si vous êtes arrivé là, vous avez déjà du courage!!!).

Grégory