Bonjour Michel,
Tu peux simplement inscrire en début de procédure : On error resume next
'---------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
On error resume next
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
'---------------------------
Mais, il serait préférable que tu définisse le "Range" sur lequel ta
procédure doit avoir un effet.
à titre d'exemple :
Ta macro s'exécutera seulement pour les cellules C1:C5, tout autre
modification dans ta feuille n'affectera pas ces
cellules.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg as range, Plg as Range
Set Rg = Range("C1:C5")
Set Plg = intersect(rg,target)
if not Plg is nothing then
for each c in plg
If Ucase(c.Value) = "MDF 38" Then choix
next
end if
Set Rg = Nothing : Set Plg = Nothing
End Sub
P.S. "Choix" est une variable ? Est-elle renseignée au moment de
l'exécution de la macro ? Si non, tu vas obtenir des 0
ou rien selon le type de variable que tu lui a attribué (Integer ou
String). Si tu cette variable est définie au niveau
d'une autre procédure, Tu dois la déclarer au niveau du module (en haut)
et non au niveau de la procédure pour que sa
valeur soit disponible.
Salutations!
"Michel" a écrit dans le message de news:
Bonjour,
Pour faire suite à mon mail d'hier, j'ai corrigé la macro ci-dessous mais
maintenant, je ne peux plus faire de copier/coller ni de suppression sur
une
plage multiple. Comment peut-on contourner le problème ?
Salutations
Michel
Private Sub Worksheet_Change(ByVal Target As Range)
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
Bonjour Michel,
Tu peux simplement inscrire en début de procédure : On error resume next
'---------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
On error resume next
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
'---------------------------
Mais, il serait préférable que tu définisse le "Range" sur lequel ta
procédure doit avoir un effet.
à titre d'exemple :
Ta macro s'exécutera seulement pour les cellules C1:C5, tout autre
modification dans ta feuille n'affectera pas ces
cellules.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg as range, Plg as Range
Set Rg = Range("C1:C5")
Set Plg = intersect(rg,target)
if not Plg is nothing then
for each c in plg
If Ucase(c.Value) = "MDF 38" Then choix
next
end if
Set Rg = Nothing : Set Plg = Nothing
End Sub
P.S. "Choix" est une variable ? Est-elle renseignée au moment de
l'exécution de la macro ? Si non, tu vas obtenir des 0
ou rien selon le type de variable que tu lui a attribué (Integer ou
String). Si tu cette variable est définie au niveau
d'une autre procédure, Tu dois la déclarer au niveau du module (en haut)
et non au niveau de la procédure pour que sa
valeur soit disponible.
Salutations!
"Michel" <michel@lafrite.be> a écrit dans le message de news:
uB8GKyzEFHA.3304@tk2msftngp13.phx.gbl...
Bonjour,
Pour faire suite à mon mail d'hier, j'ai corrigé la macro ci-dessous mais
maintenant, je ne peux plus faire de copier/coller ni de suppression sur
une
plage multiple. Comment peut-on contourner le problème ?
Salutations
Michel
Private Sub Worksheet_Change(ByVal Target As Range)
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
Bonjour Michel,
Tu peux simplement inscrire en début de procédure : On error resume next
'---------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
On error resume next
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
'---------------------------
Mais, il serait préférable que tu définisse le "Range" sur lequel ta
procédure doit avoir un effet.
à titre d'exemple :
Ta macro s'exécutera seulement pour les cellules C1:C5, tout autre
modification dans ta feuille n'affectera pas ces
cellules.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg as range, Plg as Range
Set Rg = Range("C1:C5")
Set Plg = intersect(rg,target)
if not Plg is nothing then
for each c in plg
If Ucase(c.Value) = "MDF 38" Then choix
next
end if
Set Rg = Nothing : Set Plg = Nothing
End Sub
P.S. "Choix" est une variable ? Est-elle renseignée au moment de
l'exécution de la macro ? Si non, tu vas obtenir des 0
ou rien selon le type de variable que tu lui a attribué (Integer ou
String). Si tu cette variable est définie au niveau
d'une autre procédure, Tu dois la déclarer au niveau du module (en haut)
et non au niveau de la procédure pour que sa
valeur soit disponible.
Salutations!
"Michel" a écrit dans le message de news:
Bonjour,
Pour faire suite à mon mail d'hier, j'ai corrigé la macro ci-dessous mais
maintenant, je ne peux plus faire de copier/coller ni de suppression sur
une
plage multiple. Comment peut-on contourner le problème ?
Salutations
Michel
Private Sub Worksheet_Change(ByVal Target As Range)
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
Bonjour Michel,
Tu peux simplement inscrire en début de procédure : On error resume next
'---------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
On error resume next
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
'---------------------------
Mais, il serait préférable que tu définisse le "Range" sur lequel ta
procédure doit avoir un effet.
à titre d'exemple :
Ta macro s'exécutera seulement pour les cellules C1:C5, tout autre
modification dans ta feuille n'affectera pas ces
cellules.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg as range, Plg as Range
Set Rg = Range("C1:C5")
Set Plg = intersect(rg,target)
if not Plg is nothing then
for each c in plg
If Ucase(c.Value) = "MDF 38" Then choix
next
end if
Set Rg = Nothing : Set Plg = Nothing
End Sub
P.S. "Choix" est une variable ? Est-elle renseignée au moment de
l'exécution de la macro ? Si non, tu vas obtenir des 0
ou rien selon le type de variable que tu lui a attribué (Integer ou
String). Si tu cette variable est définie au niveau
d'une autre procédure, Tu dois la déclarer au niveau du module (en haut)
et non au niveau de la procédure pour que sa
valeur soit disponible.
Salutations!
"Michel" a écrit dans le message de news:
Bonjour,
Pour faire suite à mon mail d'hier, j'ai corrigé la macro ci-dessous mais
maintenant, je ne peux plus faire de copier/coller ni de suppression sur
une
plage multiple. Comment peut-on contourner le problème ?
Salutations
Michel
Private Sub Worksheet_Change(ByVal Target As Range)
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
Bonjour Michel,
Tu peux simplement inscrire en début de procédure : On error resume next
'---------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
On error resume next
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
'---------------------------
Mais, il serait préférable que tu définisse le "Range" sur lequel ta
procédure doit avoir un effet.
à titre d'exemple :
Ta macro s'exécutera seulement pour les cellules C1:C5, tout autre
modification dans ta feuille n'affectera pas ces
cellules.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg as range, Plg as Range
Set Rg = Range("C1:C5")
Set Plg = intersect(rg,target)
if not Plg is nothing then
for each c in plg
If Ucase(c.Value) = "MDF 38" Then choix
next
end if
Set Rg = Nothing : Set Plg = Nothing
End Sub
P.S. "Choix" est une variable ? Est-elle renseignée au moment de
l'exécution de la macro ? Si non, tu vas obtenir des 0
ou rien selon le type de variable que tu lui a attribué (Integer ou
String). Si tu cette variable est définie au niveau
d'une autre procédure, Tu dois la déclarer au niveau du module (en haut)
et non au niveau de la procédure pour que sa
valeur soit disponible.
Salutations!
"Michel" <michel@lafrite.be> a écrit dans le message de news:
uB8GKyzEFHA.3304@tk2msftngp13.phx.gbl...
Bonjour,
Pour faire suite à mon mail d'hier, j'ai corrigé la macro ci-dessous mais
maintenant, je ne peux plus faire de copier/coller ni de suppression sur
une
plage multiple. Comment peut-on contourner le problème ?
Salutations
Michel
Private Sub Worksheet_Change(ByVal Target As Range)
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
Bonjour Michel,
Tu peux simplement inscrire en début de procédure : On error resume next
'---------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
On error resume next
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
'---------------------------
Mais, il serait préférable que tu définisse le "Range" sur lequel ta
procédure doit avoir un effet.
à titre d'exemple :
Ta macro s'exécutera seulement pour les cellules C1:C5, tout autre
modification dans ta feuille n'affectera pas ces
cellules.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg as range, Plg as Range
Set Rg = Range("C1:C5")
Set Plg = intersect(rg,target)
if not Plg is nothing then
for each c in plg
If Ucase(c.Value) = "MDF 38" Then choix
next
end if
Set Rg = Nothing : Set Plg = Nothing
End Sub
P.S. "Choix" est une variable ? Est-elle renseignée au moment de
l'exécution de la macro ? Si non, tu vas obtenir des 0
ou rien selon le type de variable que tu lui a attribué (Integer ou
String). Si tu cette variable est définie au niveau
d'une autre procédure, Tu dois la déclarer au niveau du module (en haut)
et non au niveau de la procédure pour que sa
valeur soit disponible.
Salutations!
"Michel" a écrit dans le message de news:
Bonjour,
Pour faire suite à mon mail d'hier, j'ai corrigé la macro ci-dessous mais
maintenant, je ne peux plus faire de copier/coller ni de suppression sur
une
plage multiple. Comment peut-on contourner le problème ?
Salutations
Michel
Private Sub Worksheet_Change(ByVal Target As Range)
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
Bonjour Michel,
Au lieu de m'explique ce qui ne va pas, essaie plutôt de m'explique ce que
tu veux faire. Et si tu utilises des
contrôles, Où ces contrôles sont situés ? d'où émanent-ils Boîte d'outils
formulaire ou contrôle si ils sont dans une
feuille de calcul .
Salutations!
"Michel" a écrit dans le message de news:
Merci pour ta réponse
En fait, la finalité de ma feuille est de remplacer une chaîne de
caractère
par une autre (par une userform) sur une plage fixe sur laquelle j'ai des
calculs de posés. Je vais essayer de borner le range à mes cellules de
saisie concernées, c'est une excellente idée !
Par contre, j'ai besoin de récupérer les variables LIG et COL qui me
servent
à intégrer le résultat de ma userform dans cellule ou j'ai saisi "MDF 38".
Est-ce que le fait de rajouter la range ne va pas me planter la récup de
ma
cellule saisie ?
Private Sub ListBox1_Click()
ActiveSheet.Cells(LIG, COL).Value = UserForm3.ListBox1
End Sub
choix est une macro d'un module qui me lance la userform :
Public LIG, COL As Integer
Sub Bouton1_QuandClic()
UserForm1.Show
End Sub
Sub Bouton2_QuandClic()
UserForm2.Show
End Sub
Sub choix()
UserForm3.Show
End Sub
Merci encore pour ton aide très précieuse !
Salutations
Michel
"MichDenis" a écrit dans le message de news:
ek04$Bonjour Michel,
Tu peux simplement inscrire en début de procédure : On error resume next
'---------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
On error resume next
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
'---------------------------
Mais, il serait préférable que tu définisse le "Range" sur lequel ta
procédure doit avoir un effet.
à titre d'exemple :
Ta macro s'exécutera seulement pour les cellules C1:C5, tout autre
modification dans ta feuille n'affectera pas ces
cellules.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg as range, Plg as Range
Set Rg = Range("C1:C5")
Set Plg = intersect(rg,target)
if not Plg is nothing then
for each c in plg
If Ucase(c.Value) = "MDF 38" Then choix
next
end if
Set Rg = Nothing : Set Plg = Nothing
End Sub
P.S. "Choix" est une variable ? Est-elle renseignée au moment de
l'exécution de la macro ? Si non, tu vas obtenir des 0
ou rien selon le type de variable que tu lui a attribué (Integer ou
String). Si tu cette variable est définie au niveau
d'une autre procédure, Tu dois la déclarer au niveau du module (en haut)
et non au niveau de la procédure pour que sa
valeur soit disponible.
Salutations!
"Michel" a écrit dans le message de news:
Bonjour,
Pour faire suite à mon mail d'hier, j'ai corrigé la macro ci-dessous mais
maintenant, je ne peux plus faire de copier/coller ni de suppression sur
une
plage multiple. Comment peut-on contourner le problème ?
Salutations
Michel
Private Sub Worksheet_Change(ByVal Target As Range)
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
Bonjour Michel,
Au lieu de m'explique ce qui ne va pas, essaie plutôt de m'explique ce que
tu veux faire. Et si tu utilises des
contrôles, Où ces contrôles sont situés ? d'où émanent-ils Boîte d'outils
formulaire ou contrôle si ils sont dans une
feuille de calcul .
Salutations!
"Michel" <michel@lafrite.be> a écrit dans le message de news:
ex5CDm2EFHA.3536@TK2MSFTNGP15.phx.gbl...
Merci pour ta réponse
En fait, la finalité de ma feuille est de remplacer une chaîne de
caractère
par une autre (par une userform) sur une plage fixe sur laquelle j'ai des
calculs de posés. Je vais essayer de borner le range à mes cellules de
saisie concernées, c'est une excellente idée !
Par contre, j'ai besoin de récupérer les variables LIG et COL qui me
servent
à intégrer le résultat de ma userform dans cellule ou j'ai saisi "MDF 38".
Est-ce que le fait de rajouter la range ne va pas me planter la récup de
ma
cellule saisie ?
Private Sub ListBox1_Click()
ActiveSheet.Cells(LIG, COL).Value = UserForm3.ListBox1
End Sub
choix est une macro d'un module qui me lance la userform :
Public LIG, COL As Integer
Sub Bouton1_QuandClic()
UserForm1.Show
End Sub
Sub Bouton2_QuandClic()
UserForm2.Show
End Sub
Sub choix()
UserForm3.Show
End Sub
Merci encore pour ton aide très précieuse !
Salutations
Michel
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
ek04$M2EFHA.2032@tk2msftngp13.phx.gbl...
Bonjour Michel,
Tu peux simplement inscrire en début de procédure : On error resume next
'---------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
On error resume next
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
'---------------------------
Mais, il serait préférable que tu définisse le "Range" sur lequel ta
procédure doit avoir un effet.
à titre d'exemple :
Ta macro s'exécutera seulement pour les cellules C1:C5, tout autre
modification dans ta feuille n'affectera pas ces
cellules.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg as range, Plg as Range
Set Rg = Range("C1:C5")
Set Plg = intersect(rg,target)
if not Plg is nothing then
for each c in plg
If Ucase(c.Value) = "MDF 38" Then choix
next
end if
Set Rg = Nothing : Set Plg = Nothing
End Sub
P.S. "Choix" est une variable ? Est-elle renseignée au moment de
l'exécution de la macro ? Si non, tu vas obtenir des 0
ou rien selon le type de variable que tu lui a attribué (Integer ou
String). Si tu cette variable est définie au niveau
d'une autre procédure, Tu dois la déclarer au niveau du module (en haut)
et non au niveau de la procédure pour que sa
valeur soit disponible.
Salutations!
"Michel" <michel@lafrite.be> a écrit dans le message de news:
uB8GKyzEFHA.3304@tk2msftngp13.phx.gbl...
Bonjour,
Pour faire suite à mon mail d'hier, j'ai corrigé la macro ci-dessous mais
maintenant, je ne peux plus faire de copier/coller ni de suppression sur
une
plage multiple. Comment peut-on contourner le problème ?
Salutations
Michel
Private Sub Worksheet_Change(ByVal Target As Range)
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
Bonjour Michel,
Au lieu de m'explique ce qui ne va pas, essaie plutôt de m'explique ce que
tu veux faire. Et si tu utilises des
contrôles, Où ces contrôles sont situés ? d'où émanent-ils Boîte d'outils
formulaire ou contrôle si ils sont dans une
feuille de calcul .
Salutations!
"Michel" a écrit dans le message de news:
Merci pour ta réponse
En fait, la finalité de ma feuille est de remplacer une chaîne de
caractère
par une autre (par une userform) sur une plage fixe sur laquelle j'ai des
calculs de posés. Je vais essayer de borner le range à mes cellules de
saisie concernées, c'est une excellente idée !
Par contre, j'ai besoin de récupérer les variables LIG et COL qui me
servent
à intégrer le résultat de ma userform dans cellule ou j'ai saisi "MDF 38".
Est-ce que le fait de rajouter la range ne va pas me planter la récup de
ma
cellule saisie ?
Private Sub ListBox1_Click()
ActiveSheet.Cells(LIG, COL).Value = UserForm3.ListBox1
End Sub
choix est une macro d'un module qui me lance la userform :
Public LIG, COL As Integer
Sub Bouton1_QuandClic()
UserForm1.Show
End Sub
Sub Bouton2_QuandClic()
UserForm2.Show
End Sub
Sub choix()
UserForm3.Show
End Sub
Merci encore pour ton aide très précieuse !
Salutations
Michel
"MichDenis" a écrit dans le message de news:
ek04$Bonjour Michel,
Tu peux simplement inscrire en début de procédure : On error resume next
'---------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
On error resume next
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
'---------------------------
Mais, il serait préférable que tu définisse le "Range" sur lequel ta
procédure doit avoir un effet.
à titre d'exemple :
Ta macro s'exécutera seulement pour les cellules C1:C5, tout autre
modification dans ta feuille n'affectera pas ces
cellules.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg as range, Plg as Range
Set Rg = Range("C1:C5")
Set Plg = intersect(rg,target)
if not Plg is nothing then
for each c in plg
If Ucase(c.Value) = "MDF 38" Then choix
next
end if
Set Rg = Nothing : Set Plg = Nothing
End Sub
P.S. "Choix" est une variable ? Est-elle renseignée au moment de
l'exécution de la macro ? Si non, tu vas obtenir des 0
ou rien selon le type de variable que tu lui a attribué (Integer ou
String). Si tu cette variable est définie au niveau
d'une autre procédure, Tu dois la déclarer au niveau du module (en haut)
et non au niveau de la procédure pour que sa
valeur soit disponible.
Salutations!
"Michel" a écrit dans le message de news:
Bonjour,
Pour faire suite à mon mail d'hier, j'ai corrigé la macro ci-dessous mais
maintenant, je ne peux plus faire de copier/coller ni de suppression sur
une
plage multiple. Comment peut-on contourner le problème ?
Salutations
Michel
Private Sub Worksheet_Change(ByVal Target As Range)
LIG = Target.Row
COL = Target.Column
If Target.Value = "MDF 38" Or Target.Value = "mdf 38" Then choix
End Sub
Bonjour Michel,
Question :
'-------------------
Private Sub
->remplacement
code
ActiveSheet.Cells(LIG, COL).Value = UserForm3.ListBox1
End Sub
Avec les infos que tu m'a transmis, ça fonctionne mais il me reste
quelques
détails à revoir : je souhaite plutot avoir le libellé du code MP dans une
textbox unique plutot que dans une listbox mais je ne sais pas comment
décaler d'une colonne la valeur du code vers le libellé. Et puis, est-ce
que
tout ça tiens la route ?
Réponse :
'------------------
Voici une petite explication ....Si tu comprends ce bout de code, tu vas
pouvoir te débrouiller pour récupérer
l'information qui se trouve dans la feuille de calcul, qui est adjacente à
l'information sélectionnée dans ton listbox
et l'affichée soit dans un textbox ou ailleurs. Si tu as besoin
d'informations supplémentaires, ne te gêne pas ... mais
essaie d'être un brin plus spécifique...
Le code qui suit peut être mis sous l'événement de ton choix dans ton
formulaire
'----------------------------------------
Private Sub CommandButton1_Click()
'Déclaration des variables :
Dim Rg As Range, A As Integer, B As Integer
'Comme la propriété RowSource de ton
'contrôle Listbox est une plage de cellules
'Attribution de la plage à la variable Rg
Set Rg = Range(Me.ListBox1.RowSource)
'A = Index sélectionné dans ta listbox
'Tu dois additionner 1 car l'index du
'Listbox débute à zéro et non à 1
A = Rg(Me.ListBox1.ListIndex + 1).Row
'A = La ligne où se retrouve l'information
'sélectionnée dans ta feuille de données
'Détermine la colonne d'où origine le
'contenu de ta listbox
B = Rg.Column
'Rg.Parent.Name = Nom de la feuille
'où est l'information
With Worksheets(Rg.Parent.Name)
'juste pour tester ...
'x devrait être égale à l'information
'sélectionnée dans ta listbox
x = .Cells(A, B) '
'Pour affecter une valeur à la cellule
'à droite de la cellule.
.Cells(A, B).Offset(, 1) = 10
'Pour affecter une valeur à la cellule
'à gauche de la cellule.
'.Cells(A, b).Offset(, -1) = 10
End With
End Sub
'----------------------------------------
Salutations!
Bonjour Michel,
Question :
'-------------------
Private Sub
->remplacement
code
ActiveSheet.Cells(LIG, COL).Value = UserForm3.ListBox1
End Sub
Avec les infos que tu m'a transmis, ça fonctionne mais il me reste
quelques
détails à revoir : je souhaite plutot avoir le libellé du code MP dans une
textbox unique plutot que dans une listbox mais je ne sais pas comment
décaler d'une colonne la valeur du code vers le libellé. Et puis, est-ce
que
tout ça tiens la route ?
Réponse :
'------------------
Voici une petite explication ....Si tu comprends ce bout de code, tu vas
pouvoir te débrouiller pour récupérer
l'information qui se trouve dans la feuille de calcul, qui est adjacente à
l'information sélectionnée dans ton listbox
et l'affichée soit dans un textbox ou ailleurs. Si tu as besoin
d'informations supplémentaires, ne te gêne pas ... mais
essaie d'être un brin plus spécifique...
Le code qui suit peut être mis sous l'événement de ton choix dans ton
formulaire
'----------------------------------------
Private Sub CommandButton1_Click()
'Déclaration des variables :
Dim Rg As Range, A As Integer, B As Integer
'Comme la propriété RowSource de ton
'contrôle Listbox est une plage de cellules
'Attribution de la plage à la variable Rg
Set Rg = Range(Me.ListBox1.RowSource)
'A = Index sélectionné dans ta listbox
'Tu dois additionner 1 car l'index du
'Listbox débute à zéro et non à 1
A = Rg(Me.ListBox1.ListIndex + 1).Row
'A = La ligne où se retrouve l'information
'sélectionnée dans ta feuille de données
'Détermine la colonne d'où origine le
'contenu de ta listbox
B = Rg.Column
'Rg.Parent.Name = Nom de la feuille
'où est l'information
With Worksheets(Rg.Parent.Name)
'juste pour tester ...
'x devrait être égale à l'information
'sélectionnée dans ta listbox
x = .Cells(A, B) '
'Pour affecter une valeur à la cellule
'à droite de la cellule.
.Cells(A, B).Offset(, 1) = 10
'Pour affecter une valeur à la cellule
'à gauche de la cellule.
'.Cells(A, b).Offset(, -1) = 10
End With
End Sub
'----------------------------------------
Salutations!
Bonjour Michel,
Question :
'-------------------
Private Sub
->remplacement
code
ActiveSheet.Cells(LIG, COL).Value = UserForm3.ListBox1
End Sub
Avec les infos que tu m'a transmis, ça fonctionne mais il me reste
quelques
détails à revoir : je souhaite plutot avoir le libellé du code MP dans une
textbox unique plutot que dans une listbox mais je ne sais pas comment
décaler d'une colonne la valeur du code vers le libellé. Et puis, est-ce
que
tout ça tiens la route ?
Réponse :
'------------------
Voici une petite explication ....Si tu comprends ce bout de code, tu vas
pouvoir te débrouiller pour récupérer
l'information qui se trouve dans la feuille de calcul, qui est adjacente à
l'information sélectionnée dans ton listbox
et l'affichée soit dans un textbox ou ailleurs. Si tu as besoin
d'informations supplémentaires, ne te gêne pas ... mais
essaie d'être un brin plus spécifique...
Le code qui suit peut être mis sous l'événement de ton choix dans ton
formulaire
'----------------------------------------
Private Sub CommandButton1_Click()
'Déclaration des variables :
Dim Rg As Range, A As Integer, B As Integer
'Comme la propriété RowSource de ton
'contrôle Listbox est une plage de cellules
'Attribution de la plage à la variable Rg
Set Rg = Range(Me.ListBox1.RowSource)
'A = Index sélectionné dans ta listbox
'Tu dois additionner 1 car l'index du
'Listbox débute à zéro et non à 1
A = Rg(Me.ListBox1.ListIndex + 1).Row
'A = La ligne où se retrouve l'information
'sélectionnée dans ta feuille de données
'Détermine la colonne d'où origine le
'contenu de ta listbox
B = Rg.Column
'Rg.Parent.Name = Nom de la feuille
'où est l'information
With Worksheets(Rg.Parent.Name)
'juste pour tester ...
'x devrait être égale à l'information
'sélectionnée dans ta listbox
x = .Cells(A, B) '
'Pour affecter une valeur à la cellule
'à droite de la cellule.
.Cells(A, B).Offset(, 1) = 10
'Pour affecter une valeur à la cellule
'à gauche de la cellule.
'.Cells(A, b).Offset(, -1) = 10
End With
End Sub
'----------------------------------------
Salutations!