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

Sub correspondante au « double-clic-coin-droit »

9 réponses
Avatar
pierremisfud
Bonjour,

Si j'ai en A1:A10 une s=E9rie de nombres et en B1 :B10 une autre s=E9rie
de nombres et qu'en C1 j'introduis une formule du type =3DA1+B1, Excel
me permet de tirer automatiquement la formule en double-cliquant sur
le coin droite de la cellule C1.

La formule et ces r=E9f=E9rences relatives sont automatiquement g=E9n=E9r=
=E9es
tr=E8s exactement de C2 en C10.

Si je passe par l'enregistreur de macro la Sub qui m'est propos=E9e est
la suivante :

Sub extensionformule()
Range("C1").Select
Selection.AutoFill Destination:=3DRange("C1:C10")
Range("C1:C10").Select
End Sub

Cette sub est limit=E9e =E0 C1:C10 et ne va pas rep=E9rer la fin de ma
colonne de nombre qui est maintenant en C10 mais qui pourra =EAtre dans
un moment en C25 p.ex.

Ma question est donc la suivante :

Quel est le code qui comprenne o=F9 se situe la fin de la base de donn=E9e
et qui corresponde donc exactement =E0 l'action du =AB double-clic-coin-
droit =BB.

Je vous suis d'avance tr=E8s reconnaissant pour votre aide, bien
cordialement,

Pierre

9 réponses

Avatar
Corto
Bonjour ,
Selection.AutoFill Destination:¬tiveCell.CurrentRegion. _
Columns(ActiveCell.CurrentRegion.Columns.Count)

Corto

Bonjour,

Si j'ai en A1:A10 une série de nombres et en B1 :B10 une autre série
de nombres et qu'en C1 j'introduis une formule du type ¡+B1, Excel
me permet de tirer automatiquement la formule en double-cliquant sur
le coin droite de la cellule C1.

La formule et ces références relatives sont automatiquement générées
très exactement de C2 en C10.

Si je passe par l'enregistreur de macro la Sub qui m'est proposée est
la suivante :

Sub extensionformule()
Range("C1").Select
Selection.AutoFill Destination:=Range("C1:C10")
Range("C1:C10").Select
End Sub

Cette sub est limitée à C1:C10 et ne va pas repérer la fin de ma
colonne de nombre qui est maintenant en C10 mais qui pourra être dans
un moment en C25 p.ex.

Ma question est donc la suivante :

Quel est le code qui comprenne où se situe la fin de la base de donnée
et qui corresponde donc exactement à l'action du « double-clic-coin-
droit ».

Je vous suis d'avance très reconnaissant pour votre aide, bien
cordialement,

Pierre



Avatar
FFO
Salut à toi

Mets :

Range("C1").Select
Selection.AutoFill Destination:=Range("C1", [A65535].End(xlUp).Offset(0, 2))
Range("C1", [A65535].End(xlUp).Offset(0, 2)).Select

La sélection se fera en fonction du remplissage des cellules de la colonne A
Celà devrait faire
Dis moi !!!


Bonjour,

Si j'ai en A1:A10 une série de nombres et en B1 :B10 une autre série
de nombres et qu'en C1 j'introduis une formule du type ¡+B1, Excel
me permet de tirer automatiquement la formule en double-cliquant sur
le coin droite de la cellule C1.

La formule et ces références relatives sont automatiquement générées
très exactement de C2 en C10.

Si je passe par l'enregistreur de macro la Sub qui m'est proposée est
la suivante :

Sub extensionformule()
Range("C1").Select
Selection.AutoFill Destination:=Range("C1:C10")
Range("C1:C10").Select
End Sub

Cette sub est limitée à C1:C10 et ne va pas repérer la fin de ma
colonne de nombre qui est maintenant en C10 mais qui pourra être dans
un moment en C25 p.ex.

Ma question est donc la suivante :

Quel est le code qui comprenne où se situe la fin de la base de donnée
et qui corresponde donc exactement à l'action du « double-clic-coin-
droit ».

Je vous suis d'avance très reconnaissant pour votre aide, bien
cordialement,

Pierre




Avatar
pierremisfud
Selection.AutoFill Destination:¬tiveCell.CurrentRegion. _
Columns(ActiveCell.CurrentRegion.Columns.Count)

Corto


Bonjour Corto,

Ca à l'air de bien fonctionner bravo. Il faut encore que je teste ce
bout de code dans une macro beaucoup plus longue mais il n'y a pas de
raison que cela ne marche pas.

Merci beacoup pour cette réponse et très bonne journée,

Pierre M.

Avatar
pierremisfud
Rebonjour Messieurs,

Je me permets de vous solliciter à nouveau suite aux solutions que
vous avez eu la gentillesse de me soumettre.

Dans l'absolu la suggestion de Corto est celle qui me convient le
mieux.

En effet elle permet de définir une fois pour toute la cellule de
départ via un Range().Select placé en début de procédure:

Sub extensionformule2()
Range("D1").Select
Selection.AutoFill Destination:¬tiveCell.CurrentRegion. _
Columns(ActiveCell.CurrentRegion.Columns.Count)
End Sub

Le code de FFO, qui marche également bien, me semble plus compliqué
étant donnée qu'il ne suffit pas d'avoir un Range au départ, mais il
faut rappeller l'adressage plus en avant et plusieurs fois dans la
formule.

Toutefois, la formule de Corto fonctionne uniquement si la cellule
jouxtante, (E1 en l'occurrance) est vide !? S'il y a une info (formule
ou txt) en D1 la sub bug !

Auriez-vous une idée pour rendre la sub de Corto fonctionnel dans tous
les cas de figure ?

Je vous mets un lien qui compare l'action de vos deux code, afin que
vous compreniez peut-être mieux où je veux en venir.

http://cjoint.com/?ido5AsHkwg

Merci d'avance pour votre réponse, bien cordialement,

Misfud
Avatar
FFO
Rebonjour à toi

J'ai bien analysé ton fichier et tenté d'apporter une solution quant au bug
généré par la macro de Corto quand la cellule adjacente à la cellule active
n'est pas vide
Mais à part lui enlever sa donnée exécuter le code et lui remettre sa donnée
je n'ai pas trouvé la solution

Par contre en adaptant mon code à ton attente ainsi :

Range("C1").Select
Selection.AutoFill Destination:=Range(ActiveCell,
[A65535].End(xlUp).Offset(0, ActiveCell.Column - 1))
Range(ActiveCell, [A65535].End(xlUp).Offset(0, ActiveCell.Column - 1)).Select

Celà fonctionne et tu peux paramétrer à ta guise la position de la cellule
active avec la ligne

Range("C1").Select

Mon code suivra

Espérant que celà te convienne

Dis moi !!!



Rebonjour Messieurs,

Je me permets de vous solliciter à nouveau suite aux solutions que
vous avez eu la gentillesse de me soumettre.

Dans l'absolu la suggestion de Corto est celle qui me convient le
mieux.

En effet elle permet de définir une fois pour toute la cellule de
départ via un Range().Select placé en début de procédure:

Sub extensionformule2()
Range("D1").Select
Selection.AutoFill Destination:¬tiveCell.CurrentRegion. _
Columns(ActiveCell.CurrentRegion.Columns.Count)
End Sub

Le code de FFO, qui marche également bien, me semble plus compliqué
étant donnée qu'il ne suffit pas d'avoir un Range au départ, mais il
faut rappeller l'adressage plus en avant et plusieurs fois dans la
formule.

Toutefois, la formule de Corto fonctionne uniquement si la cellule
jouxtante, (E1 en l'occurrance) est vide !? S'il y a une info (formule
ou txt) en D1 la sub bug !

Auriez-vous une idée pour rendre la sub de Corto fonctionnel dans tous
les cas de figure ?

Je vous mets un lien qui compare l'action de vos deux code, afin que
vous compreniez peut-être mieux où je veux en venir.

http://cjoint.com/?ido5AsHkwg

Merci d'avance pour votre réponse, bien cordialement,

Misfud





Avatar
pierremisfud
Par contre en adaptant mon code à ton attente ainsi :

Range("C1").Select
Selection.AutoFill Destination:=Range(ActiveCell,
[A65535].End(xlUp).Offset(0, ActiveCell.Column - 1))
Range(ActiveCell, [A65535].End(xlUp).Offset(0, ActiveCell.Column - 1)).Se lect


Cher FFO,

Merci beaucoup pour cette nouvelle intervention. C'est, en effet,
exactement ce genre de code que je cherche.

Le problème est que quand je quand je fais un copier-coller de ce code
et que j'execute la macro j'ai une erreur de compilation (erreur de
syntax).

Je ne suis pas assez connaisseur pour comprendre où ça bloque !?

Je dois rentrer chez moi maintenant, mais j'irai voir faire un tour
sur ce fil ce soir à tout hasard...

Merci de m'avoir consacré du temps et partagé vos connaissances, très
bonne soirée,

P. Misfud

Avatar
FFO
Salut à toi

Je reprends ce fil aujourd'hui

As tu bien rapporté ce code ainsi (chaque ligne ne doit pas être scindée en
2 aprés la recopie)
1° ligne :
Range("C1").Select
2° ligne :
Selection.AutoFill Destination:=Range(ActiveCell,
[A65535].End(xlUp).Offset(0, ActiveCell.Column - 1))
3° Ligne:
Range(ActiveCell, [A65535].End(xlUp).Offset(0, ActiveCell.Column - 1)).Select

1°/2°/3° ligne doivent être chacune sur 1 seule ligne dans l'éditeur de macro
Si une ligne en la recopiant se transforme en 2 lignes se mettre en fin de
première ligne et opérer un "Suppr" qui doit ramener la deuxième en bout de
la première

Celà devrait fonctionner

Dis moi !!!


Par contre en adaptant mon code à ton attente ainsi :

Range("C1").Select
Selection.AutoFill Destination:=Range(ActiveCell,
[A65535].End(xlUp).Offset(0, ActiveCell.Column - 1))
Range(ActiveCell, [A65535].End(xlUp).Offset(0, ActiveCell.Column - 1)).Select


Cher FFO,

Merci beaucoup pour cette nouvelle intervention. C'est, en effet,
exactement ce genre de code que je cherche.

Le problème est que quand je quand je fais un copier-coller de ce code
et que j'execute la macro j'ai une erreur de compilation (erreur de
syntax).

Je ne suis pas assez connaisseur pour comprendre où ça bloque !?

Je dois rentrer chez moi maintenant, mais j'irai voir faire un tour
sur ce fil ce soir à tout hasard...

Merci de m'avoir consacré du temps et partagé vos connaissances, très
bonne soirée,

P. Misfud





Avatar
FFO
Salut à toi

Je reprends ce fil aujourd'hui

As tu bien rapporté ce code ainsi (chaque ligne ne doit pas être scindée en
2 aprés la recopie)
1° ligne :
Range("C1").Select
2° ligne :
Selection.AutoFill Destination:=Range(ActiveCell,
[A65535].End(xlUp).Offset(0, ActiveCell.Column - 1))
3° Ligne:
Range(ActiveCell, [A65535].End(xlUp).Offset(0, ActiveCell.Column - 1)).Select

1°/2°/3° ligne doivent être chacune sur 1 seule ligne dans l'éditeur de macro
Si une ligne en la recopiant se transforme en 2 lignes se mettre en fin de
première ligne et opérer un "Suppr" qui doit ramener la deuxième en bout de
la première

Celà devrait fonctionner

Dis moi !!!



Par contre en adaptant mon code à ton attente ainsi :

Range("C1").Select
Selection.AutoFill Destination:=Range(ActiveCell,
[A65535].End(xlUp).Offset(0, ActiveCell.Column - 1))
Range(ActiveCell, [A65535].End(xlUp).Offset(0, ActiveCell.Column - 1)).Select


Cher FFO,

Merci beaucoup pour cette nouvelle intervention. C'est, en effet,
exactement ce genre de code que je cherche.

Le problème est que quand je quand je fais un copier-coller de ce code
et que j'execute la macro j'ai une erreur de compilation (erreur de
syntax).

Je ne suis pas assez connaisseur pour comprendre où ça bloque !?

Je dois rentrer chez moi maintenant, mais j'irai voir faire un tour
sur ce fil ce soir à tout hasard...

Merci de m'avoir consacré du temps et partagé vos connaissances, très
bonne soirée,

P. Misfud





Avatar
pierremisfud
Bonjour FFO,

Ca fonctionne en effet parfaitement bien. Et moi qui essayait de
changer les points en virgules (des fois que...)

C'est très chic à toi de m'avoir aidé FFO. Merci beaucoup et à une
prochaine peut-être.

P. Misfud