OVH Cloud OVH Cloud

Execution d'une macro

4 réponses
Avatar
Did
Bonjour à Tous

Quelqu'un peut-il m'expliquer, pourquoi cette macro fonctionne correctement
si elle
est executée de la Feuil1 et me donne un message d'erreur si je l'execute de
la Feuil2.

Je souhaiterai l'executer de la Feuil2.

Merci de votre aide et de vos explications

Cordialement.
Didier.

Sub RechercheValeur() 'Recherche une valeur dans un tableau de la Feuil1
'avec condition et renvoie le nom de la colonne dans un autre tableau de la
Feuil2

Dim c As Range, cell As Range, TdR As Range

n = 3
Set c = Worksheets("Feuil2").Range("L2")
Worksheets("Feuil2").Range("L4:L23").ClearContents

Fin = Worksheets("Feuil1").Range("A1").End(xlDown).Row
Set TdR = Worksheets("Feuil1").Range("B" & Fin, Range("B" &
Fin).End(xlToRight))

For Each cell In TdR
If cell.Value = c.Value Then
n = n + 1
Worksheets("Feuil2").Cells(n, 12).Value = cell.End(xlUp).Value
End If
Next cell
End Sub

4 réponses

Avatar
anonymousA
bonjour,

vraisemeblablement parce qu'il manque un point (.) devant le
l'expression Range("B" &
Fin).End(xlToRight) contenue dans la formule
Set TdR = Worksheets("Feuil1").Range("B" & Fin, Range("B" &
Fin).End(xlToRight)). En effet dans ces conditions ce rage est référencé
implicitement à la feuille active . Donc quand tu es sur Feuil1 pas de
problème . Mais quand tu es sur Feuil2, c'est Feuil2 la feuille implicite.

A+

Bonjour à Tous

Quelqu'un peut-il m'expliquer, pourquoi cette macro fonctionne correctement
si elle
est executée de la Feuil1 et me donne un message d'erreur si je l'execute de
la Feuil2.

Je souhaiterai l'executer de la Feuil2.

Merci de votre aide et de vos explications

Cordialement.
Didier.

Sub RechercheValeur() 'Recherche une valeur dans un tableau de la Feuil1
'avec condition et renvoie le nom de la colonne dans un autre tableau de la
Feuil2

Dim c As Range, cell As Range, TdR As Range

n = 3
Set c = Worksheets("Feuil2").Range("L2")
Worksheets("Feuil2").Range("L4:L23").ClearContents

Fin = Worksheets("Feuil1").Range("A1").End(xlDown).Row
Set TdR = Worksheets("Feuil1").Range("B" & Fin, Range("B" &
Fin).End(xlToRight))

For Each cell In TdR
If cell.Value = c.Value Then
n = n + 1
Worksheets("Feuil2").Cells(n, 12).Value = cell.End(xlUp).Value
End If
Next cell
End Sub




Avatar
Did
Bonjour anonymousA
Merci beaucoup, j'ai modifié le code pour
Set TdR = Worksheets("Feuil1").Range("B" & Fin,
Worsheets("Feuil1").Range("B" & Fin).End(xlToRight)).
et ça fonctionne sans probleme.

Tres cdlt.
Did.
"anonymousA" a écrit dans le message de news:
4287217a$0$26063$
bonjour,

vraisemeblablement parce qu'il manque un point (.) devant le l'expression
Range("B" &
Fin).End(xlToRight) contenue dans la formule
Set TdR = Worksheets("Feuil1").Range("B" & Fin, Range("B" &
Fin).End(xlToRight)). En effet dans ces conditions ce rage est référencé
implicitement à la feuille active . Donc quand tu es sur Feuil1 pas de
problème . Mais quand tu es sur Feuil2, c'est Feuil2 la feuille implicite.

A+

Bonjour à Tous

Quelqu'un peut-il m'expliquer, pourquoi cette macro fonctionne
correctement si elle
est executée de la Feuil1 et me donne un message d'erreur si je l'execute
de la Feuil2.

Je souhaiterai l'executer de la Feuil2.

Merci de votre aide et de vos explications

Cordialement.
Didier.

Sub RechercheValeur() 'Recherche une valeur dans un tableau de la Feuil1
'avec condition et renvoie le nom de la colonne dans un autre tableau de
la Feuil2

Dim c As Range, cell As Range, TdR As Range

n = 3
Set c = Worksheets("Feuil2").Range("L2")
Worksheets("Feuil2").Range("L4:L23").ClearContents

Fin = Worksheets("Feuil1").Range("A1").End(xlDown).Row
Set TdR = Worksheets("Feuil1").Range("B" & Fin, Range("B" &
Fin).End(xlToRight))

For Each cell In TdR
If cell.Value = c.Value Then
n = n + 1
Worksheets("Feuil2").Cells(n, 12).Value =
cell.End(xlUp).Value
End If
Next cell
End Sub




Avatar
Patrick Catarsi
Le 15/05/05 11:10, dans #, « Did »
a écrit :

Bonjour à Tous

Quelqu'un peut-il m'expliquer, pourquoi cette macro fonctionne correctement
si elle
est executée de la Feuil1 et me donne un message d'erreur si je l'execute de
la Feuil2.

Je souhaiterai l'executer de la Feuil2.

Merci de votre aide et de vos explications

Cordialement.
Didier.

Sub RechercheValeur() 'Recherche une valeur dans un tableau de la Feuil1
'avec condition et renvoie le nom de la colonne dans un autre tableau de la
Feuil2

Dim c As Range, cell As Range, TdR As Range

n = 3
Set c = Worksheets("Feuil2").Range("L2")
Worksheets("Feuil2").Range("L4:L23").ClearContents

Fin = Worksheets("Feuil1").Range("A1").End(xlDown).Row
Set TdR = Worksheets("Feuil1").Range("B" & Fin, Range("B" &
Fin).End(xlToRight))

For Each cell In TdR
If cell.Value = c.Value Then
n = n + 1
Worksheets("Feuil2").Cells(n, 12).Value = cell.End(xlUp).Value
End If
Next cell
End Sub


Slt

Je pense que c'est parce que tu lui demandes une action qui sélectionne en
feuille 1 et qui oblige à etre en feuille 1 donc
Tu peut démarrer ta macro en feuille 2 mais rajouter ensuite
Un code Worksheets("feuil1").select, à la fin un worksheets("feuil2").
Select ,tu dois avoir résolu ton problème.
Patrick

Avatar
Did
Bonjour Patrick

En effet, j'ai solutionné mon problème en identifiant un range qui se trouve
dans la feuille1.
Merci de tes conseils.

Cdlt.
Did.

"Patrick Catarsi" a écrit dans le message de
news: BEAD142D.6D8C%
Le 15/05/05 11:10, dans #, « Did »

Bonjour à Tous

Quelqu'un peut-il m'expliquer, pourquoi cette macro fonctionne
correctement
si elle
est executée de la Feuil1 et me donne un message d'erreur si je l'execute
de
la Feuil2.

Je souhaiterai l'executer de la Feuil2.

Merci de votre aide et de vos explications

Cordialement.
Didier.

Sub RechercheValeur() 'Recherche une valeur dans un tableau de la Feuil1
'avec condition et renvoie le nom de la colonne dans un autre tableau de
la
Feuil2

Dim c As Range, cell As Range, TdR As Range

n = 3
Set c = Worksheets("Feuil2").Range("L2")
Worksheets("Feuil2").Range("L4:L23").ClearContents

Fin = Worksheets("Feuil1").Range("A1").End(xlDown).Row
Set TdR = Worksheets("Feuil1").Range("B" & Fin, Range("B" &
Fin).End(xlToRight))

For Each cell In TdR
If cell.Value = c.Value Then
n = n + 1
Worksheets("Feuil2").Cells(n, 12).Value = cell.End(xlUp).Value
End If
Next cell
End Sub


Slt

Je pense que c'est parce que tu lui demandes une action qui sélectionne en
feuille 1 et qui oblige à etre en feuille 1 donc
Tu peut démarrer ta macro en feuille 2 mais rajouter ensuite
Un code Worksheets("feuil1").select, à la fin un worksheets("feuil2").
Select ,tu dois avoir résolu ton problème.
Patrick