double click sur croix dans cellule

  • Initiateur de la discussion Initiateur de la discussion JC de Lorient
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

JC de Lorient

Guest
Bonsoir le forum

je voudrais simplement savoir si : l'action du double click sur la croix dans une cellule (pour recopier jusque la dernière cellule) existe en VBA ?

Si oui j'apprécierais de connaitre ce code

merci a vous

JC
 
Salut JC
oui celà exite
je ne sais pas si tu utilises cette possibilité qu'est l'enregistreur de macro de la barre Visual Basic
voilà ce que celà donne
Sub Auto()
'
' Auto Macro
' Macro enregistrée le 25/04/2005 par Jean Marie

Range('B1').Select
Selection.AutoFill Destination:=Range('B1:B17')
Range('B1:B17').Select
Range('D20').Select
End Sub
en colonne A des données en B1 une donnée que je copie avec le double click sur la croix
d'ou le
Selection.AutoFill Destination:=Range('B1:B17')
testes l'enregistreur ensuite tu n'as plus qu'a aménager
Amicalement
Jean Marie
 
pour compléter un peu, le deuxième argument de la méthode AutoFill (Type) est intéressant, il permet de faire différents types de recopie, par exemple pour étirer une plage de jours ou de mois, ou incrémenter des valeurs numériques etc.

zut, j'ai validé trop vite :

voici un exemple pour étirer automatiquement une liste de jours :

Code:
Sub Fill()
Dim Cel As Range, Plage As Range
  Set Plage = Feuil1.Range('A1:A20')
  Set Cel = Feuil1.Range('A1')
  Cel = 'lundi'
  Cel.AutoFill Plage, xlFillDays
End Sub

Message édité par: Ti_, à: 25/04/2005 20:37
 
re
bonsoir Ti
merci pour ce complément d'info très interressant je viens de consulter l'aide
peux tu me dire si dans l'aide VBA les parentheses sont utilent ou pas
expression.AutoFill (Destination, Type) si oui quelle est leurs signification
une question peut être bizarre, mais moi je me pose plein de ce genre de questions Arf
Merci d'Avance
 
Bonsoir le forum

merci a vous deux
J'ai du loupé un truc dans la macro car je l'avais enregistré pour tester mais le double click a du passer a coté

me voilà sauvé

Merci et bonne soirée

JC
 
Salut à tous !

J'utilise fréquement ce genre de remplissage et pour les jours, j me contente d'écrire dans ma cellule le premier jour, puis ma macro :

Sub AutoFillJour()
Range('B2').AutoFill Range('B2:B37'), xlFillDays
End Sub

@ +++

Moa
 
Non, ici les parenthèses ne sont pas utiles (quoique, on verra quelques lignes plus bas)
En fait, quand on appelle une procédure (ou une méthode) qui ne renvoie aucune valeur, et qu'on lui passe des paramètres, il n'y a pas à mettre les parenthèses

Ex :

Sub Appel(V As Double)
'...
End Sub

Sub Test()
Dim D as Double
Appel D
End Sub

Mais si on appelle une fonction (donc une procédure qui renvoie une valeur) et qu'on lui passe des paramètres, ceux-ci doivent être placés entre parenthèses

Ex :

Function Appel(V As Double) As Double
'...
End Function

Sub Test()
Dim D as Double, F as Double
F = Appel(D)
End Sub

Maintenant, petite astuce. Quelquefois, vous voulez appeler la procédure du haut, qui attend un argument Double et dans votre procédure appelante, votre variable est d'un autre type, disons Long. Ca donnera ça :

Sub Appel(V As Double)
'...
End Sub

Sub Test()
Dim D as Long
Appel D
End Sub

Ecrit comme ceci votre programme vous renverra une erreur de compilation, parce que V est un argument par référence, il attend donc une variable Double. La parade à cela pourrait être d'écrire :

Sub Test()
Dim D as Long
Appel Cdbl(D)
End Sub

ou encore plus simplement

Sub Test()
Dim D as Long
Appel (D)
End Sub

On constate que le simple fait de mettre D entre parenthèses rend le transtypage automatique, ou plus exactement, il transmet le paramètre par valeur et non plus par référence, comme l'indique la déclaration de la procédure Appel.

ça marche aussi avec une fonction, en doublant les parenthèses alors :

Function Appel(V As Double) As Double
Appel = V - 3.5
End Function

Sub Test()
Dim D As Long, F As Double
F = Appel((D))
End Sub


Attention toutefois aux effets indésirables : si une variable est passée par référence à une procédure, ça peut être pour accélerer le traitement (parce que ça va plus vite que quand on passe l'argument ByVal), mais ça peut être aussi parce qu'on applique un certain traitement à la variable D définie dans Test, donc qu'on s'attend à ce que celle-ci nous revienne modifiée.

Bon, en général, c'est nous qui écrivons nos macros, nous sommes supposés savoir ce que nous faisons. C'est pourquoi dans le cas ci-dessus, je me simplifierai bien la vie en écrivant directement :

Function Appel(ByVal V As Double) As Double
Appel = V - 3.5
End Function

Mais beaucoup de méthodes intégrées de VBA attendent des arguments par référence, alors l'astuce ci-dessus pourra peut-être vous simplifier la vie un jour, moi ça m'est déjà arrivé.

Ceci dit, pour conclure, lorsqu'on envoie une variable à une autre procédure pour la modifier (comme dans l'exemple 1), je recommanderai plutôt l'écriture sous forme de fonction, comme dans mon deuxième exemple, et alors je pourrai écrire plus simplement :

Function Appel(ByVal V As Double) As Double
'...
End Function

Sub Test()
Dim D as Long, F as Double
F = Appel(D)
End Sub

De plus mon argument D est passé ByVal, il n'y a plus d'erreur à craindre, et le résultat est récupéré dans une variable (F) du bon type cette fois.

Message édité par: Ti_, à: 25/04/2005 22:11
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
32
Affichages
1 K
Réponses
10
Affichages
515
  • Question Question
XL 2021 Macro
Réponses
6
Affichages
302
Retour