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

exécusion si

10 réponses
Avatar
Daniel
Bonjour à tous

J'ai une macro que je voudrait qui s'exécute seulement
si la cellule active est une des cellules comprise
entre H15 @ H55 et qui n'est pas vide.
Merci :-)

Voici la macro

Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " & "&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " & "&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:\Program Files\Garmin\nRoute\nRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub

10 réponses

Avatar
michdenis
Bonsoir Daniel

Dans le module feuille de la feuille où l'action doit se dérouler, copier ceci :

à chaque fois que tu va sélectionner une cellule dans la plage H15:H55, ta macro va s'exécuter d'elle-même .

'----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("h15:H55")) Is Nothing Then
Application.EnableEvents = False
call Traduire_CamionTest
Application.EnableEvents = True
End If

End Sub

'---------------------------------
Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " & "&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " & "&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------


Salutations"





"Daniel" a écrit dans le message de news: eTo3$%
Bonjour à tous

J'ai une macro que je voudrait qui s'exécute seulement
si la cellule active est une des cellules comprise
entre H15 @ H55 et qui n'est pas vide.
Merci :-)

Voici la macro

Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " & "&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " & "&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
Avatar
Daniel
Bonsoir Michdenis

Je me suis pas assez explique,
le départ de la macros ce fait quand ont fait les touches CRTL-G
mais je veut être sur que l'on exécute la macros quand une des cellules
en H15 @ H55 est sélectionné et qu'elle contienne des donné.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel

Dans le module feuille de la feuille où l'action doit se dérouler, copier
ceci :

à chaque fois que tu va sélectionner une cellule dans la plage H15:H55, ta
macro va s'exécuter d'elle-même .

'----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("h15:H55")) Is Nothing Then
Application.EnableEvents = False
call Traduire_CamionTest
Application.EnableEvents = True
End If

End Sub

'---------------------------------
Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " & "&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------


Salutations"





"Daniel" a écrit dans le message de news:
eTo3$%
Bonjour à tous

J'ai une macro que je voudrait qui s'exécute seulement
si la cellule active est une des cellules comprise
entre H15 @ H55 et qui n'est pas vide.
Merci :-)

Voici la macro

Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " & "&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub






Avatar
michdenis
Bonsoir Daniel,

Tu débutes ta macro comme ceci... et tu ajoutes toute ta macro par suite sans le End Sub ...

Prend le temps de définir le nom de la feuille où ta macro doit s'appliquer.


'----------------------------------------------
Sub Traduire_CamionTest

Dim Ligne, Valeur
Dim MyDataObject As DataObject
Dim NomFeuille As String

NomFeuille = ActiveSheet.Name
Application.ScreenUpdating = False

With Worksheets("Feuil1") ' à déterminer
.Activate
If Not Intersect(ActiveCell, .Range("H15:H55")) Is Nothing Then


'tu ajoutes l'intégralité de ta macro






End if
End with
sheets(NomFeuille).select
End Sub
'----------------------------------------------


Salutatioins!


"Daniel" a écrit dans le message de news: O5to%
Bonsoir Michdenis

Je me suis pas assez explique,
le départ de la macros ce fait quand ont fait les touches CRTL-G
mais je veut être sur que l'on exécute la macros quand une des cellules
en H15 @ H55 est sélectionné et qu'elle contienne des donné.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel

Dans le module feuille de la feuille où l'action doit se dérouler, copier
ceci :

à chaque fois que tu va sélectionner une cellule dans la plage H15:H55, ta
macro va s'exécuter d'elle-même .

'----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("h15:H55")) Is Nothing Then
Application.EnableEvents = False
call Traduire_CamionTest
Application.EnableEvents = True
End If

End Sub

'---------------------------------
Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " & "&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------


Salutations"





"Daniel" a écrit dans le message de news:
eTo3$%
Bonjour à tous

J'ai une macro que je voudrait qui s'exécute seulement
si la cellule active est une des cellules comprise
entre H15 @ H55 et qui n'est pas vide.
Merci :-)

Voici la macro

Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " & "&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub






Avatar
michdenis
Bonjour Daniel,

Pour répondre à une de tes préoccupation, j'aurais tu ajouter une ligne de comme celle-ci :

if activecell <> "" then

immédiatement en dessous de celle-ci :
If Not Intersect(ActiveCell, .Range("H15:H55")) Is Nothing Then

Et d'ajouter une End If à la fin de la macro.


Salutations!


"michdenis" a écrit dans le message de news:
Bonsoir Daniel,

Tu débutes ta macro comme ceci... et tu ajoutes toute ta macro par suite sans le End Sub ...

Prend le temps de définir le nom de la feuille où ta macro doit s'appliquer.


'----------------------------------------------
Sub Traduire_CamionTest

Dim Ligne, Valeur
Dim MyDataObject As DataObject
Dim NomFeuille As String

NomFeuille = ActiveSheet.Name
Application.ScreenUpdating = False

With Worksheets("Feuil1") ' à déterminer
.Activate
If Not Intersect(ActiveCell, .Range("H15:H55")) Is Nothing Then


'tu ajoutes l'intégralité de ta macro






End if
End with
sheets(NomFeuille).select
End Sub
'----------------------------------------------


Salutatioins!


"Daniel" a écrit dans le message de news: O5to%
Bonsoir Michdenis

Je me suis pas assez explique,
le départ de la macros ce fait quand ont fait les touches CRTL-G
mais je veut être sur que l'on exécute la macros quand une des cellules
en H15 @ H55 est sélectionné et qu'elle contienne des donné.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel

Dans le module feuille de la feuille où l'action doit se dérouler, copier
ceci :

à chaque fois que tu va sélectionner une cellule dans la plage H15:H55, ta
macro va s'exécuter d'elle-même .

'----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("h15:H55")) Is Nothing Then
Application.EnableEvents = False
call Traduire_CamionTest
Application.EnableEvents = True
End If

End Sub

'---------------------------------
Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " & "&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------


Salutations"





"Daniel" a écrit dans le message de news:
eTo3$%
Bonjour à tous

J'ai une macro que je voudrait qui s'exécute seulement
si la cellule active est une des cellules comprise
entre H15 @ H55 et qui n'est pas vide.
Merci :-)

Voici la macro

Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " & "&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub






Avatar
Daniel
Bonsoir MichDenis

Un petit problème ces que le nom de la feuille varie ,
il faut utiliser le nom de la feuille qui est active au départ de la macro.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel,

Tu débutes ta macro comme ceci... et tu ajoutes toute ta macro par suite
sans le End Sub ...

Prend le temps de définir le nom de la feuille où ta macro doit
s'appliquer.


'----------------------------------------------
Sub Traduire_CamionTest

Dim Ligne, Valeur
Dim MyDataObject As DataObject
Dim NomFeuille As String

NomFeuille = ActiveSheet.Name
Application.ScreenUpdating = False

With Worksheets("Feuil1") ' à déterminer
.Activate
If Not Intersect(ActiveCell, .Range("H15:H55")) Is Nothing Then


'tu ajoutes l'intégralité de ta macro






End if
End with
sheets(NomFeuille).select
End Sub
'----------------------------------------------


Salutatioins!


"Daniel" a écrit dans le message de news:
O5to%
Bonsoir Michdenis

Je me suis pas assez explique,
le départ de la macros ce fait quand ont fait les touches CRTL-G
mais je veut être sur que l'on exécute la macros quand une des cellules
en H15 @ H55 est sélectionné et qu'elle contienne des donné.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel

Dans le module feuille de la feuille où l'action doit se dérouler, copier
ceci :

à chaque fois que tu va sélectionner une cellule dans la plage H15:H55,
ta
macro va s'exécuter d'elle-même .

'----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("h15:H55")) Is Nothing Then
Application.EnableEvents = False
call Traduire_CamionTest
Application.EnableEvents = True
End If

End Sub

'---------------------------------
Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " &
"&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------


Salutations"





"Daniel" a écrit dans le message de news:
eTo3$%
Bonjour à tous

J'ai une macro que je voudrait qui s'exécute seulement
si la cellule active est une des cellules comprise
entre H15 @ H55 et qui n'est pas vide.
Merci :-)

Voici la macro

Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " &
"&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub











Avatar
michdenis
Bonjour Daniel,

Observe lorsque la fenêtre VBE(visual basic editor) est ouverte

dans la section gauche de la fenetre, il y a l'explorateur de projet où tu peux afficher l'arborescence des objets de chaque
classeur ouvert.
Les feuilles sont identifiées de cette manière :

Feuil1(Feuil1)
Feuil1 = Est la propriété Name de l'objet et ne se modifie pas même si le nom de l'onglet est modifé.
(Feuil1) représente le nom de l'onglet.

Dans le code tu as le choix, tu peux utiliser soit :

With Worksheets("Feuil1") ' nom de l'onglet de la feuille
OU
With Feuil1 'Nom de l'objet Feuille

à toi d'adapter la procédure en utilisant soit le nom de l'onglet de ta feuille ou propriété "name" de l'objet feuille.


Salutations!




"Daniel" a écrit dans le message de news: %
Bonsoir MichDenis

Un petit problème ces que le nom de la feuille varie ,
il faut utiliser le nom de la feuille qui est active au départ de la macro.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel,

Tu débutes ta macro comme ceci... et tu ajoutes toute ta macro par suite
sans le End Sub ...

Prend le temps de définir le nom de la feuille où ta macro doit
s'appliquer.


'----------------------------------------------
Sub Traduire_CamionTest

Dim Ligne, Valeur
Dim MyDataObject As DataObject
Dim NomFeuille As String

NomFeuille = ActiveSheet.Name
Application.ScreenUpdating = False

With Worksheets("Feuil1") ' à déterminer
.Activate
If Not Intersect(ActiveCell, .Range("H15:H55")) Is Nothing Then


'tu ajoutes l'intégralité de ta macro






End if
End with
sheets(NomFeuille).select
End Sub
'----------------------------------------------


Salutatioins!


"Daniel" a écrit dans le message de news:
O5to%
Bonsoir Michdenis

Je me suis pas assez explique,
le départ de la macros ce fait quand ont fait les touches CRTL-G
mais je veut être sur que l'on exécute la macros quand une des cellules
en H15 @ H55 est sélectionné et qu'elle contienne des donné.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel

Dans le module feuille de la feuille où l'action doit se dérouler, copier
ceci :

à chaque fois que tu va sélectionner une cellule dans la plage H15:H55,
ta
macro va s'exécuter d'elle-même .

'----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("h15:H55")) Is Nothing Then
Application.EnableEvents = False
call Traduire_CamionTest
Application.EnableEvents = True
End If

End Sub

'---------------------------------
Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " &
"&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------


Salutations"





"Daniel" a écrit dans le message de news:
eTo3$%
Bonjour à tous

J'ai une macro que je voudrait qui s'exécute seulement
si la cellule active est une des cellules comprise
entre H15 @ H55 et qui n'est pas vide.
Merci :-)

Voici la macro

Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " &
"&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub











Avatar
Daniel
Rebonsoir MichDenis

La macros est dans un autre fichier, qui est toujour ouvert et
dans l'option CTRL-G comme racourci.
Le deuxième fichier avec le quel je veut rechercher la donné
(dans colonne H15:H55) à plusieur onglet avec des noms différent.

Si je met "feuile1" cela ne fonctionnera pas ???

Comment m'y prendre ??
Merci

"michdenis" a écrit dans le message de news:

Bonjour Daniel,

Observe lorsque la fenêtre VBE(visual basic editor) est ouverte

dans la section gauche de la fenetre, il y a l'explorateur de projet où
tu peux afficher l'arborescence des objets de chaque
classeur ouvert.
Les feuilles sont identifiées de cette manière :

Feuil1(Feuil1)
Feuil1 = Est la propriété Name de l'objet et ne se modifie pas même si le
nom de l'onglet est modifé.
(Feuil1) représente le nom de l'onglet.

Dans le code tu as le choix, tu peux utiliser soit :

With Worksheets("Feuil1") ' nom de l'onglet de la feuille
OU
With Feuil1 'Nom de l'objet Feuille

à toi d'adapter la procédure en utilisant soit le nom de l'onglet de ta
feuille ou propriété "name" de l'objet feuille.


Salutations!




"Daniel" a écrit dans le message de news:
%
Bonsoir MichDenis

Un petit problème ces que le nom de la feuille varie ,
il faut utiliser le nom de la feuille qui est active au départ de la
macro.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel,

Tu débutes ta macro comme ceci... et tu ajoutes toute ta macro par suite
sans le End Sub ...

Prend le temps de définir le nom de la feuille où ta macro doit
s'appliquer.


'----------------------------------------------
Sub Traduire_CamionTest

Dim Ligne, Valeur
Dim MyDataObject As DataObject
Dim NomFeuille As String

NomFeuille = ActiveSheet.Name
Application.ScreenUpdating = False

With Worksheets("Feuil1") ' à déterminer
.Activate
If Not Intersect(ActiveCell, .Range("H15:H55")) Is Nothing Then


'tu ajoutes l'intégralité de ta macro






End if
End with
sheets(NomFeuille).select
End Sub
'----------------------------------------------


Salutatioins!


"Daniel" a écrit dans le message de news:
O5to%
Bonsoir Michdenis

Je me suis pas assez explique,
le départ de la macros ce fait quand ont fait les touches CRTL-G
mais je veut être sur que l'on exécute la macros quand une des cellules
en H15 @ H55 est sélectionné et qu'elle contienne des donné.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel

Dans le module feuille de la feuille où l'action doit se dérouler,
copier
ceci :

à chaque fois que tu va sélectionner une cellule dans la plage H15:H55,
ta
macro va s'exécuter d'elle-même .

'----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("h15:H55")) Is Nothing Then
Application.EnableEvents = False
call Traduire_CamionTest
Application.EnableEvents = True
End If

End Sub

'---------------------------------
Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " &
"&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------


Salutations"





"Daniel" a écrit dans le message de news:
eTo3$%
Bonjour à tous

J'ai une macro que je voudrait qui s'exécute seulement
si la cellule active est une des cellules comprise
entre H15 @ H55 et qui n'est pas vide.
Merci :-)

Voici la macro

Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " &
"&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
















Avatar
michdenis
Bonjour Daniel,

Explique toi clairement :

Est-ce que ta macro doit s'exécuter pour toutes les feuilles d'un classeur ? Seulement pour certaines feuilles si oui lesquels ? où
pour seulement une feuille ?

Comme ta macro est dans un autre classeur toujours ouvert (Est-ce ton perso.xls ? sinon comment appelles-tu la macro ? ), Est-ce que
ta macro doit s'exécuter pour tous les classeurs que tu ouvres ou seulement pour un ?

Il ne faut pas être timide... si tu retiens de l'information, il est difficile de t'aiguiller correctement.


Salutations!





"Daniel" a écrit dans le message de news: %
Rebonsoir MichDenis

La macros est dans un autre fichier, qui est toujour ouvert et
dans l'option CTRL-G comme racourci.
Le deuxième fichier avec le quel je veut rechercher la donné
(dans colonne H15:H55) à plusieur onglet avec des noms différent.

Si je met "feuile1" cela ne fonctionnera pas ???

Comment m'y prendre ??
Merci

"michdenis" a écrit dans le message de news:

Bonjour Daniel,

Observe lorsque la fenêtre VBE(visual basic editor) est ouverte

dans la section gauche de la fenetre, il y a l'explorateur de projet où
tu peux afficher l'arborescence des objets de chaque
classeur ouvert.
Les feuilles sont identifiées de cette manière :

Feuil1(Feuil1)
Feuil1 = Est la propriété Name de l'objet et ne se modifie pas même si le
nom de l'onglet est modifé.
(Feuil1) représente le nom de l'onglet.

Dans le code tu as le choix, tu peux utiliser soit :

With Worksheets("Feuil1") ' nom de l'onglet de la feuille
OU
With Feuil1 'Nom de l'objet Feuille

à toi d'adapter la procédure en utilisant soit le nom de l'onglet de ta
feuille ou propriété "name" de l'objet feuille.


Salutations!




"Daniel" a écrit dans le message de news:
%
Bonsoir MichDenis

Un petit problème ces que le nom de la feuille varie ,
il faut utiliser le nom de la feuille qui est active au départ de la
macro.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel,

Tu débutes ta macro comme ceci... et tu ajoutes toute ta macro par suite
sans le End Sub ...

Prend le temps de définir le nom de la feuille où ta macro doit
s'appliquer.


'----------------------------------------------
Sub Traduire_CamionTest

Dim Ligne, Valeur
Dim MyDataObject As DataObject
Dim NomFeuille As String

NomFeuille = ActiveSheet.Name
Application.ScreenUpdating = False

With Worksheets("Feuil1") ' à déterminer
.Activate
If Not Intersect(ActiveCell, .Range("H15:H55")) Is Nothing Then


'tu ajoutes l'intégralité de ta macro






End if
End with
sheets(NomFeuille).select
End Sub
'----------------------------------------------


Salutatioins!


"Daniel" a écrit dans le message de news:
O5to%
Bonsoir Michdenis

Je me suis pas assez explique,
le départ de la macros ce fait quand ont fait les touches CRTL-G
mais je veut être sur que l'on exécute la macros quand une des cellules
en H15 @ H55 est sélectionné et qu'elle contienne des donné.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel

Dans le module feuille de la feuille où l'action doit se dérouler,
copier
ceci :

à chaque fois que tu va sélectionner une cellule dans la plage H15:H55,
ta
macro va s'exécuter d'elle-même .

'----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("h15:H55")) Is Nothing Then
Application.EnableEvents = False
call Traduire_CamionTest
Application.EnableEvents = True
End If

End Sub

'---------------------------------
Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " &
"&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------


Salutations"





"Daniel" a écrit dans le message de news:
eTo3$%
Bonjour à tous

J'ai une macro que je voudrait qui s'exécute seulement
si la cellule active est une des cellules comprise
entre H15 @ H55 et qui n'est pas vide.
Merci :-)

Voici la macro

Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " &
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " &
"&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
















Avatar
Daniel
Rebonsoir MichDenis

La macro doit s'exécuter sur tous les classeur et tous les feuilles ouvert.
le classeur qui contien la macros n'est pas mon perso.xls mais un fichier
qui contien beaucoup de Formes .
ou !
Est t'il possible de faire fonctionner la macro sur la feuille ou la cellule
est active
au monent de l'exécution de la macro (quand je fait "CTRL-g" ).

Merci

"michdenis" a écrit dans le message de news:

Bonjour Daniel,

Explique toi clairement :

Est-ce que ta macro doit s'exécuter pour toutes les feuilles d'un classeur
? Seulement pour certaines feuilles si oui lesquels ? où
pour seulement une feuille ?

Comme ta macro est dans un autre classeur toujours ouvert (Est-ce ton
perso.xls ? sinon comment appelles-tu la macro ? ), Est-ce que
ta macro doit s'exécuter pour tous les classeurs que tu ouvres ou
seulement pour un ?

Il ne faut pas être timide... si tu retiens de l'information, il est
difficile de t'aiguiller correctement.


Salutations!





"Daniel" a écrit dans le message de news:
%
Rebonsoir MichDenis

La macros est dans un autre fichier, qui est toujour ouvert et
dans l'option CTRL-G comme racourci.
Le deuxième fichier avec le quel je veut rechercher la donné
(dans colonne H15:H55) à plusieur onglet avec des noms différent.

Si je met "feuile1" cela ne fonctionnera pas ???

Comment m'y prendre ??
Merci

"michdenis" a écrit dans le message de news:

Bonjour Daniel,

Observe lorsque la fenêtre VBE(visual basic editor) est ouverte

dans la section gauche de la fenetre, il y a l'explorateur de projet où
tu peux afficher l'arborescence des objets de chaque
classeur ouvert.
Les feuilles sont identifiées de cette manière :

Feuil1(Feuil1)
Feuil1 = Est la propriété Name de l'objet et ne se modifie pas même si le
nom de l'onglet est modifé.
(Feuil1) représente le nom de l'onglet.

Dans le code tu as le choix, tu peux utiliser soit :

With Worksheets("Feuil1") ' nom de l'onglet de la feuille
OU
With Feuil1 'Nom de l'objet Feuille

à toi d'adapter la procédure en utilisant soit le nom de l'onglet de ta
feuille ou propriété "name" de l'objet feuille.


Salutations!




"Daniel" a écrit dans le message de news:
%
Bonsoir MichDenis

Un petit problème ces que le nom de la feuille varie ,
il faut utiliser le nom de la feuille qui est active au départ de la
macro.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel,

Tu débutes ta macro comme ceci... et tu ajoutes toute ta macro par suite
sans le End Sub ...

Prend le temps de définir le nom de la feuille où ta macro doit
s'appliquer.


'----------------------------------------------
Sub Traduire_CamionTest

Dim Ligne, Valeur
Dim MyDataObject As DataObject
Dim NomFeuille As String

NomFeuille = ActiveSheet.Name
Application.ScreenUpdating = False

With Worksheets("Feuil1") ' à déterminer
.Activate
If Not Intersect(ActiveCell, .Range("H15:H55")) Is Nothing Then


'tu ajoutes l'intégralité de ta macro






End if
End with
sheets(NomFeuille).select
End Sub
'----------------------------------------------


Salutatioins!


"Daniel" a écrit dans le message de news:
O5to%
Bonsoir Michdenis

Je me suis pas assez explique,
le départ de la macros ce fait quand ont fait les touches CRTL-G
mais je veut être sur que l'on exécute la macros quand une des cellules
en H15 @ H55 est sélectionné et qu'elle contienne des donné.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel

Dans le module feuille de la feuille où l'action doit se dérouler,
copier
ceci :

à chaque fois que tu va sélectionner une cellule dans la plage H15:H55,
ta
macro va s'exécuter d'elle-même .

'----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("h15:H55")) Is Nothing Then
Application.EnableEvents = False
call Traduire_CamionTest
Application.EnableEvents = True
End If

End Sub

'---------------------------------
Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) "
&
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " &
"&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------


Salutations"





"Daniel" a écrit dans le message de news:
eTo3$%
Bonjour à tous

J'ai une macro que je voudrait qui s'exécute seulement
si la cellule active est une des cellules comprise
entre H15 @ H55 et qui n'est pas vide.
Merci :-)

Voici la macro

Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) "
&
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " &
"&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub





















Avatar
michdenis
Bonsoir Daniel,

Voilà, ce qui suit devrait faire le tour de la question :

Ma proposition suppose que ta macro fonctionne bien ... je n'y ai pas touchée!

Solution préconisée : Tu copies cette procédure dans le ThisWorkbook de ton Classeur Perso.xls. De cette manière, ta macro va être
disponible pour tous les classeurs et pour toutes les feuilles de chacun des classeurs ouverts.

P.S. Si tu n'as pas de perso.xls, tu utilises l'enregistreur de macro, et dans la fenêtre qui te demande de choisir un nom à ta
macro, il y a une liste déroulante au bas de cette fenêtre et tu sélectionnes "Enregistrer cette macro dans le classeur de macros
personnelles". Maintenant, tu enregistres n'importe quelle action bidon... le but est de faire "apparaître ton classeur perso.xls.

Dans ton classeur perso.xls, tu dois ajouter la référence suivante à ton projet :
Fenêtre vbe(visual basic editor) / barre de menu / outils / références /
Et tu coches : "Microsoft Forms 2.0 object librairy"
La raison est que tu utilises cet objet : DataObject dans ton code
Dim MyDataObject As DataObject
d'où le besoin de charger cette référence.

Dans cette procédure assure toi que le nom de la macro appelé à la même orthographe à tous les endroits où tu en feras référence.
'------------------------------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

Dim LaMacro As String
Application.ScreenUpdating = False

With Sh
.Activate
If Not Intersect(ActiveCell, .Range("H15:H55")) Is Nothing Then
If ActiveCell <> "" Then
LaMacro = "'" & Workbooks(Activeworkbook.name).Name & _
"'!Traduire_CamionTest"
Application.Run LaMacro
End If
End If
End With

End Sub
'------------------------------------------------

'Toujours dans le ThisWorkbook de ton classeur Perso.xls, Copie ce qui suit :

'à l'ouverture de ton classeur, le raccourci claivier est associé à la macro à activer.
'----------------------------------
Private Sub Workbook_Open()

Application.MacroOptions Macro:="Traduire_CamionTest", ShortcutKey:="g"

End Sub
'----------------------------------

'Ceci libérera le raccourci clavier à la fermeture de ton classeur perso.xls.
'----------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.MacroOptions Macro:="Traduire_CamionTest", ShortcutKey:=""

End Sub
'----------------------------------

'Maintenant dans UN MODULE STANDARD de ton classeur PERSO.XLS, tu copies ta macro.

'----------------------------------------
Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) " & "&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " & "&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
'----------------------------------------



Salutations!





Dans le ThisWorkbook de chaque classeur où tu veux




"Daniel" a écrit dans le message de news: Ol2ix%
Rebonsoir MichDenis

La macro doit s'exécuter sur tous les classeur et tous les feuilles ouvert.
le classeur qui contien la macros n'est pas mon perso.xls mais un fichier
qui contien beaucoup de Formes .
ou !
Est t'il possible de faire fonctionner la macro sur la feuille ou la cellule
est active
au monent de l'exécution de la macro (quand je fait "CTRL-g" ).

Merci

"michdenis" a écrit dans le message de news:

Bonjour Daniel,

Explique toi clairement :

Est-ce que ta macro doit s'exécuter pour toutes les feuilles d'un classeur
? Seulement pour certaines feuilles si oui lesquels ? où
pour seulement une feuille ?

Comme ta macro est dans un autre classeur toujours ouvert (Est-ce ton
perso.xls ? sinon comment appelles-tu la macro ? ), Est-ce que
ta macro doit s'exécuter pour tous les classeurs que tu ouvres ou
seulement pour un ?

Il ne faut pas être timide... si tu retiens de l'information, il est
difficile de t'aiguiller correctement.


Salutations!





"Daniel" a écrit dans le message de news:
%
Rebonsoir MichDenis

La macros est dans un autre fichier, qui est toujour ouvert et
dans l'option CTRL-G comme racourci.
Le deuxième fichier avec le quel je veut rechercher la donné
(dans colonne H15:H55) à plusieur onglet avec des noms différent.

Si je met "feuile1" cela ne fonctionnera pas ???

Comment m'y prendre ??
Merci

"michdenis" a écrit dans le message de news:

Bonjour Daniel,

Observe lorsque la fenêtre VBE(visual basic editor) est ouverte

dans la section gauche de la fenetre, il y a l'explorateur de projet où
tu peux afficher l'arborescence des objets de chaque
classeur ouvert.
Les feuilles sont identifiées de cette manière :

Feuil1(Feuil1)
Feuil1 = Est la propriété Name de l'objet et ne se modifie pas même si le
nom de l'onglet est modifé.
(Feuil1) représente le nom de l'onglet.

Dans le code tu as le choix, tu peux utiliser soit :

With Worksheets("Feuil1") ' nom de l'onglet de la feuille
OU
With Feuil1 'Nom de l'objet Feuille

à toi d'adapter la procédure en utilisant soit le nom de l'onglet de ta
feuille ou propriété "name" de l'objet feuille.


Salutations!




"Daniel" a écrit dans le message de news:
%
Bonsoir MichDenis

Un petit problème ces que le nom de la feuille varie ,
il faut utiliser le nom de la feuille qui est active au départ de la
macro.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel,

Tu débutes ta macro comme ceci... et tu ajoutes toute ta macro par suite
sans le End Sub ...

Prend le temps de définir le nom de la feuille où ta macro doit
s'appliquer.


'----------------------------------------------
Sub Traduire_CamionTest

Dim Ligne, Valeur
Dim MyDataObject As DataObject
Dim NomFeuille As String

NomFeuille = ActiveSheet.Name
Application.ScreenUpdating = False

With Worksheets("Feuil1") ' à déterminer
.Activate
If Not Intersect(ActiveCell, .Range("H15:H55")) Is Nothing Then


'tu ajoutes l'intégralité de ta macro






End if
End with
sheets(NomFeuille).select
End Sub
'----------------------------------------------


Salutatioins!


"Daniel" a écrit dans le message de news:
O5to%
Bonsoir Michdenis

Je me suis pas assez explique,
le départ de la macros ce fait quand ont fait les touches CRTL-G
mais je veut être sur que l'on exécute la macros quand une des cellules
en H15 @ H55 est sélectionné et qu'elle contienne des donné.
Merci

"michdenis" a écrit dans le message de news:

Bonsoir Daniel

Dans le module feuille de la feuille où l'action doit se dérouler,
copier
ceci :

à chaque fois que tu va sélectionner une cellule dans la plage H15:H55,
ta
macro va s'exécuter d'elle-même .

'----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("h15:H55")) Is Nothing Then
Application.EnableEvents = False
call Traduire_CamionTest
Application.EnableEvents = True
End If

End Sub

'---------------------------------
Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) "
&
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " &
"&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub
'---------------------------------


Salutations"





"Daniel" a écrit dans le message de news:
eTo3$%
Bonjour à tous

J'ai une macro que je voudrait qui s'exécute seulement
si la cellule active est une des cellules comprise
entre H15 @ H55 et qui n'est pas vide.
Merci :-)

Voici la macro

Sub Traduire_CamionTest()
Dim Ligne, Valeur
Dim MyDataObject As DataObject
ActiveCell.Offset(0, 3).Select
Ligne = ActiveCell.Row
Range("k" & Ligne).FormulaLocal = "=""N"" & GAUCHE(H" & Ligne & ",2) "
&
"&
"" "" & STXT(H" & Ligne & ",4,2) & ""."" & STXT(H" & Ligne & ",6,3) " &
"&
"" "" & GAUCHE(SUBSTITUE(I" & Ligne & ",""-"",""W""),3)" & "& "" "" &
STXT(I" & Ligne & ",5,2) & ""."" & STXT(I" & Ligne & ",7,3)"
Set MyDataObject = New DataObject
MyDataObject.SetText Range("K" & Ligne).Value
MyDataObject.PutInClipboard
Selection.ClearContents
ActiveCell.Offset(1, -3).Select
MyAppID = Shell("C:Program FilesGarminnRoutenRoute.exe", 1)
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
SendKeys "{ESC}", True ' Envoie la combinaison escape pour fermé la
fenêtre
Application.ScreenUpdating = False
SendKeys "^g", True
SendKeys "^v", True
SendKeys "{enter}", True
Set Pressp = Nothing
Application.ScreenUpdating = True
End Sub