Bonsoir,
Je cherche à appeler une macro directement d'une cellule, est-ce possible?
Merci de vos lumières
Bonsoir,
Je cherche à appeler une macro directement d'une cellule, est-ce possible?
Merci de vos lumières
Bonsoir
Pas clair, un peu plus de précisions.
J'ai un fichier extrait d'une base de donnée (60000 lignes).
Il me faut faire un calcul complexe sur toutes ces lignes dans une nouvelle colonne (calcul existant dans un macro).
Je veux donc insérer un colonne avec pour chaque ligne un appel à cette macro.
En option : si je pouvais envoyer des paramètres ce serait encore mieux.
J'espère avoir été plus claire.
merci
Sans ton code, ça sera difficile de deviner
J'ai une macro principale qui me fait ma mise en page, mes tri, mes Filtres et insertion de colonne de calcul.
Le macro qui suit ne peut-être directement écrite dans une cellule, je comptais insérer une colonne "E" et mettre un appel de cette macro et copier cette appel sur toute les lignes.
En option : transformer ma macro en fonction et envoyer les valeurs des 2 colonnes précédentes.
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Sub VPA() Dim Resultat As Long Dim lpFort As Long, lpFaible As Long lpFaible = Ranger("C2") 'C2 = -7842 lpFaible = lpFaible And 65535 lpFort = shr(Ranger("D2"), 16) 'D2 = 18861 Resultat = lpFort Or lpFaible Range("E2").FormulaR1C1 = Resultat '=> E2=1236132190 End Sub Public Function shr(ByVal Value As Long, Shift Value As Byte) As Long shr = Value If Shift > 0 Then shr = Int (shr * (2 ^ Shift)) End If End Function
Par exemple (j'ai pris en paramètre les cellules de la colonne C)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Sub VPA(Rng As Range) Dim Resultat As Long Dim lpFort As Long, lpFaible As Long lpFaible = Rng.Value 'C2 = -7842 lpFaible = lpFaible And 65535 lpFort = shr(Rng.Offset(0, 1).Value, 16) 'D2 = 18861 Resultat = lpFort Or lpFaible Rng.Offset(0, 2).Value = Resultat '=> E2=1236132190 End Sub Sub test() Dim c As Range For Each c In Range("C2:C100") Call VPA(c) Next c End Sub
Super,
J'ai juste corrigé l'instruction suivante :
Hormis cela c'est exactement ce que je voulais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Rng.Offset(0, 2).Value = Resultat '=> E2=1236132190
Merci mercatog
Bonne nuit
Effectivement, une coquille du copier/ coller
Corrigée
Bonne nuit
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager