Macro Excel à executer sur une cellule selectionné - VB/VBA/VBS - Programmation
Marsh Posté le 21-06-2019 à 16:46:24
Bonjour,
Par exemple dans le module de feuille :
Code :
|
Marsh Posté le 24-06-2019 à 11:08:00
patrice33740 a écrit : Bonjour,
|
Bonjour Patrice,
Merci pour ta réponse, mais du coup je me rend compte que ça ne marche pas parce que ma macro s'exécute sur toute une colonne (enfin de de d3 à d500).
If Range("C1" ) <> "." Then
Selection.Copy
Range("D3:D500" ).Select
Selection.Copy
Range("E3" ).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
il faudra qu'à la place de : Range("D3:D500" ).Select je puisse récupérer la ligne de la cellule selectionné avec quelque chose comme ça : Ligne = ActiveCell.Row
et du coup exécuter la suite du code…
Est-ce que vous auriez une idée ?
Merci par avance
Marsh Posté le 24-06-2019 à 13:55:39
Bonjour,
En VBA, à de très très rares exceptions prés, il ne faut jamais utiliser .Select
et éviter d'utiliser Selection, ActiveCell, ...
Essaies :
Code :
|
Marsh Posté le 05-07-2019 à 08:46:36
patrice33740 a écrit : Bonjour,
|
Bonjour,
je suis un peu perdu …. je ne sais pas quoi modifier
en gros dans ma feuille excel j'ai ce bout de code qui dès que le contenu des cellules C3 à C500 change je lance la macro4 :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C3:C500" )) Is Nothing Then
Call Macro4
End If
End Sub
la macro4 : me sert a faire un copier coller en version texte (paste value) d'un résultat de recherche dans un onglet qui s'appel DB.
Sub Macro4()
'
' Macro4 Macro
'
If Range("C1" ) <> "." Then
Selection.Copy
Range("D3:D500" ).Select
Selection.Copy
Range("E3" ).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("F1" ) <> "." Then
Selection.Copy
Range("F3:F500" ).Select
Selection.Copy
Range("G3" ).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End Sub
je fais ce copier coller parce que je veux pouvoir rajouter des caractères à mon résultat de recherche.
Actuellement quand je modifie la case C6 le résultat de la recherche est bien copier dans les deux cases ou je veux, dans cet exemple en E6 et G6 par contre dans la macro4 j'ai la ligne : Range("D3:D500" ).Select qui m'écrase toute les autres résultats aussi … Par exemple si j'ai quelque chose d'écris dans la cellule E4 ou G8 c'est écrasé …
J'aimerais modifier la macro pour quelle ne copie les résultats que sur la ligne ou je me trouve …. si je viens de changer le contenu de la ligne C9 la macro ne doit s'exécuter que sur la ligne 9 et donc n'écrase pas les résultats des autres lignes déjà rentré ….
J'espère que mon explication fumeuse est plus claire !
Merci pour votre aide
Marsh Posté le 05-07-2019 à 17:13:49
Bonjour,
Je répète : En VBA, à de très très rares exceptions prés, il ne faut jamais utiliser .Select
et éviter d'utiliser Selection, ActiveCell, ...
Il suffit de transmettre la plage modifiée (Target) à ta macro4 :
Code :
|
Marsh Posté le 15-07-2019 à 10:01:10
patrice33740 a écrit : Bonjour,
|
Super merci ça à l'air de fonctionner !
Marsh Posté le 21-06-2019 à 08:42:45
Bonjour,
je cherche comment faire pour exécuter une macro sur une ligne entière seulement si une cellule particulière de cette ligne est sélectionnée ?
En gros j'ai une macro qui génère des calculs en fonction de paramètre mais j'aimerais quelle ne s'execute seulement si la quatrième cellule de la ligne est sélectionnée, c'est pour éviter d'écraser des valeurs précédemment rentrées dans le tableau ….
Merci