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

Définition de plage en VBA

8 réponses
Avatar
Jacques
Bonsoir,

J'essaie de définir une plage dont le nombre de lignes est variable

Si j'écris :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne, 0),
Sh2.Range("Liste_Entités"), 2, False)

Ca marche, la zone de recherche étant dénommée

mais si je remplace

Sh2.Range("Liste_Entités")

par

Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column))

cela donne ça :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne, 0),
Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column)), 2, False)

mais ca ne marche plus (la plage fait 4 colonnes et je cherche une valeur
dans la 2ème colonne)

je ne trouve pas où est mon erreur

avez-vous une idée?

Merci

8 réponses

Avatar
JB
Bonjour,

Essai:

http://cjoint.com/?duhAVy57Tc

JB

On 20 mar, 00:09, "Jacques" <none> wrote:
Bonsoir,

J'essaie de définir une plage dont le nombre de lignes est variable

Si j'écris :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne, 0) ,
Sh2.Range("Liste_Entités"), 2, False)

Ca marche, la zone de recherche étant dénommée

mais si je remplace

Sh2.Range("Liste_Entités")

par

Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column))

cela donne ça :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne, 0) ,
Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column)), 2, False)

mais ca ne marche plus (la plage fait 4 colonnes et je cherche une valeur
dans la 2ème colonne)

je ne trouve pas où est mon erreur

avez-vous une idée?

Merci


Avatar
Jacques
ok j'essaie

merci


"JB" a écrit dans le message de groupe de
discussion :

Bonjour,

Essai:

http://cjoint.com/?duhAVy57Tc

JB

On 20 mar, 00:09, "Jacques" <none> wrote:
Bonsoir,

J'essaie de définir une plage dont le nombre de lignes est variable

Si j'écris :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne, 0),
Sh2.Range("Liste_Entités"), 2, False)

Ca marche, la zone de recherche étant dénommée

mais si je remplace

Sh2.Range("Liste_Entités")

par

Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column))

cela donne ça :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne, 0),
Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column)), 2, False)

mais ca ne marche plus (la plage fait 4 colonnes et je cherche une valeur
dans la 2ème colonne)

je ne trouve pas où est mon erreur

avez-vous une idée?

Merci


Avatar
Jacques
mais c'est le même code que le mien, non?

dans le classeur sur cjoint.com ca marche si je lance la macro essai a
partir de la feuille Feuil1 où se trouve la table mais pas si je la lance à
partir de la feuille Feuil2

Un peu le même cas de figure chez moi. le bouton n'est pas sur la feuille
"sh2" mais sur la feuille "sh" et le résultat de la recherche est écrit dans
une feuille "sh1"
ca ne marche donc pas non plus chez moi quand je lance "essai" partir d'une
autre feuille que "sh2"


"JB" a écrit dans le message de groupe de
discussion :

Bonjour,

Essai:

http://cjoint.com/?duhAVy57Tc

JB

On 20 mar, 00:09, "Jacques" <none> wrote:
Bonsoir,

J'essaie de définir une plage dont le nombre de lignes est variable

Si j'écris :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne, 0),
Sh2.Range("Liste_Entités"), 2, False)

Ca marche, la zone de recherche étant dénommée

mais si je remplace

Sh2.Range("Liste_Entités")

par

Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column))

cela donne ça :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne, 0),
Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column)), 2, False)

mais ca ne marche plus (la plage fait 4 colonnes et je cherche une valeur
dans la 2ème colonne)

je ne trouve pas où est mon erreur

avez-vous une idée?

Merci


Avatar
JB
Bonjour

Sub essai()
Set Sh2 = Sheets("feuil1")
x = Application.VLookup(13, Sh2.Range(("A29"),
Sh2.Range("A29").End(xlDown).End(xlToRight)), 2, False)
MsgBox x
End Sub

http://cjoint.com/?dvfzAbUogR

JB


On 20 mar, 21:13, "Jacques" <none> wrote:
mais c'est le même code que le mien, non?

dans le classeur sur cjoint.com ca marche si je lance la macro essai a
partir de la feuille Feuil1  où se trouve la table mais pas si je la l ance à
partir de la feuille Feuil2

Un peu le même cas de figure chez moi. le bouton n'est pas sur la feuill e
"sh2" mais sur la feuille "sh" et le résultat de la recherche est écri t dans
une feuille "sh1"
ca ne marche donc pas non plus chez moi quand je lance "essai" partir d'un e
autre feuille que "sh2"

"JB" a écrit dans le message de groupe de
discussion :

Bonjour,

Essai:

http://cjoint.com/?duhAVy57Tc

JB

On 20 mar, 00:09, "Jacques" <none> wrote:



Bonsoir,

J'essaie de définir une plage dont le nombre de lignes est variable

Si j'écris :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne, 0),
Sh2.Range("Liste_Entités"), 2, False)

Ca marche, la zone de recherche étant dénommée

mais si je remplace

Sh2.Range("Liste_Entités")

par

Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column))

cela donne ça :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne, 0),
Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column)), 2, False)

mais ca ne marche plus (la plage fait 4 colonnes et je cherche une valeu r
dans la 2ème colonne)

je ne trouve pas où est mon erreur

avez-vous une idée?

Merci- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Jacques
Ca marche parfaitement

La logique m'échappe... j'aimerais aussi comprendre

Et pourquoi certains fonctions sont-elles précédées de "Application."?

Merci encore

"JB" a écrit dans le message de groupe de
discussion :

Bonjour

Sub essai()
Set Sh2 = Sheets("feuil1")
x = Application.VLookup(13, Sh2.Range(("A29"),
Sh2.Range("A29").End(xlDown).End(xlToRight)), 2, False)
MsgBox x
End Sub

http://cjoint.com/?dvfzAbUogR

JB


On 20 mar, 21:13, "Jacques" <none> wrote:
mais c'est le même code que le mien, non?

dans le classeur sur cjoint.com ca marche si je lance la macro essai a
partir de la feuille Feuil1 où se trouve la table mais pas si je la lance
à
partir de la feuille Feuil2

Un peu le même cas de figure chez moi. le bouton n'est pas sur la feuille
"sh2" mais sur la feuille "sh" et le résultat de la recherche est écrit
dans
une feuille "sh1"
ca ne marche donc pas non plus chez moi quand je lance "essai" partir
d'une
autre feuille que "sh2"

"JB" a écrit dans le message de groupe de
discussion :

Bonjour,

Essai:

http://cjoint.com/?duhAVy57Tc

JB

On 20 mar, 00:09, "Jacques" <none> wrote:



Bonsoir,

J'essaie de définir une plage dont le nombre de lignes est variable

Si j'écris :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne,
0),
Sh2.Range("Liste_Entités"), 2, False)

Ca marche, la zone de recherche étant dénommée

mais si je remplace

Sh2.Range("Liste_Entités")

par

Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column))

cela donne ça :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne,
0),
Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column)), 2, False)

mais ca ne marche plus (la plage fait 4 colonnes et je cherche une
valeur
dans la 2ème colonne)

je ne trouve pas où est mon erreur

avez-vous une idée?

Merci- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
JB
Bonjour

-On donne la première cellule et la dernière cellule du champ:

Range(premCellule,DernCellule)

-Les fonctions du tableur RechercheV,Equiv,..sont précédées de
Application

JB

On 21 mar, 07:38, "Jacques" <none> wrote:
Ca marche parfaitement

La logique m'échappe... j'aimerais aussi comprendre

Et pourquoi certains fonctions sont-elles précédées de "Application. "?

Merci encore

"JB" a écrit dans le message de groupe de
discussion :

Bonjour

Sub essai()
 Set Sh2 = Sheets("feuil1")
 x = Application.VLookup(13, Sh2.Range(("A29"),
Sh2.Range("A29").End(xlDown).End(xlToRight)), 2, False)
 MsgBox x
End Sub

http://cjoint.com/?dvfzAbUogR

JB

On 20 mar, 21:13, "Jacques" <none> wrote:



mais c'est le même code que le mien, non?

dans le classeur sur cjoint.com ca marche si je lance la macro essai a
partir de la feuille Feuil1 où se trouve la table mais pas si je la la nce
à
partir de la feuille Feuil2

Un peu le même cas de figure chez moi. le bouton n'est pas sur la feui lle
"sh2" mais sur la feuille "sh" et le résultat de la recherche est éc rit
dans
une feuille "sh1"
ca ne marche donc pas non plus chez moi quand je lance "essai" partir
d'une
autre feuille que "sh2"

"JB" a écrit dans le message de groupe de
discussion :

Bonjour,

Essai:

http://cjoint.com/?duhAVy57Tc

JB

On 20 mar, 00:09, "Jacques" <none> wrote:

Bonsoir,

J'essaie de définir une plage dont le nombre de lignes est variable

Si j'écris :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne ,
0),
Sh2.Range("Liste_Entités"), 2, False)

Ca marche, la zone de recherche étant dénommée

mais si je remplace

Sh2.Range("Liste_Entités")

par

Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column))

cela donne ça :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne ,
0),
Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column)), 2, False)

mais ca ne marche plus (la plage fait 4 colonnes et je cherche une
valeur
dans la 2ème colonne)

je ne trouve pas où est mon erreur

avez-vous une idée?

Merci- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




Avatar
Jacques
On donne la première cellule et la dernière cellule du champ:
Range(premCellule,DernCellule)


C'est plutôt une des formules passées en paramètre qui m'échappait
(Sh2.Range("A29").End(xlDown).End(xlToRight))


-Les fonctions du tableur RechercheV,Equiv,..sont précédées de
Application


cela veut dire que pour toutes les fonctions que l'on pourrait utiliser sur
une feuille on peut les utiliser aussi en vba en les faisant précéder de
"application." ?

merci encore


"JB" a écrit dans le message de groupe de
discussion :

Bonjour

-On donne la première cellule et la dernière cellule du champ:

Range(premCellule,DernCellule)



-Les fonctions du tableur RechercheV,Equiv,..sont précédées de
Application

JB

On 21 mar, 07:38, "Jacques" <none> wrote:
Ca marche parfaitement

La logique m'échappe... j'aimerais aussi comprendre

Et pourquoi certains fonctions sont-elles précédées de "Application."?

Merci encore

"JB" a écrit dans le message de groupe de
discussion :

Bonjour

Sub essai()
Set Sh2 = Sheets("feuil1")
x = Application.VLookup(13, Sh2.Range(("A29"),
Sh2.Range("A29").End(xlDown).End(xlToRight)), 2, False)
MsgBox x
End Sub

http://cjoint.com/?dvfzAbUogR

JB

On 20 mar, 21:13, "Jacques" <none> wrote:



mais c'est le même code que le mien, non?

dans le classeur sur cjoint.com ca marche si je lance la macro essai a
partir de la feuille Feuil1 où se trouve la table mais pas si je la
lance
à
partir de la feuille Feuil2

Un peu le même cas de figure chez moi. le bouton n'est pas sur la
feuille
"sh2" mais sur la feuille "sh" et le résultat de la recherche est écrit
dans
une feuille "sh1"
ca ne marche donc pas non plus chez moi quand je lance "essai" partir
d'une
autre feuille que "sh2"

"JB" a écrit dans le message de groupe de
discussion :

Bonjour,

Essai:

http://cjoint.com/?duhAVy57Tc

JB

On 20 mar, 00:09, "Jacques" <none> wrote:

Bonsoir,

J'essaie de définir une plage dont le nombre de lignes est variable

Si j'écris :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne,
0),
Sh2.Range("Liste_Entités"), 2, False)

Ca marche, la zone de recherche étant dénommée

mais si je remplace

Sh2.Range("Liste_Entités")

par

Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column))

cela donne ça :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Ligne,
0),
Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column)), 2, False)

mais ca ne marche plus (la plage fait 4 colonnes et je cherche une
valeur
dans la 2ème colonne)

je ne trouve pas où est mon erreur

avez-vous une idée?

Merci- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des
messages précédents -


- Afficher le texte des messages précédents -




Avatar
JB
Pas celles qui ont leur équivalent en VBA: Left,Right,..

Pour obtenir l'équivalent anglais d'une fonction du tableur:

Function AfficheFormuleAnglais(c)
AfficheFormuleAnglais = c.Formula
End Function

JB

On 21 mar, 19:59, "Jacques" <none> wrote:
On donne la première cellule et la dernière cellule du champ:
Range(premCellule,DernCellule)


C'est plutôt une des  formules passées en paramètre qui m'échapp ait
(Sh2.Range("A29").End(xlDown).End(xlToRight))

-Les fonctions du tableur RechercheV,Equiv,..sont précédées de


Application

cela veut dire que pour toutes les fonctions que l'on pourrait utiliser su r
une feuille on peut les utiliser aussi en vba en les faisant précéder de
"application." ?

merci encore

"JB" a écrit dans le message de groupe de
discussion :

Bonjour

-On donne la première cellule et la dernière cellule du champ:

Range(premCellule,DernCellule)

-Les fonctions du tableur RechercheV,Equiv,..sont précédées de
Application

JB

On 21 mar, 07:38, "Jacques" <none> wrote:



Ca marche parfaitement

La logique m'échappe... j'aimerais aussi comprendre

Et pourquoi certains fonctions sont-elles précédées de "Applicatio n."?

Merci encore

"JB" a écrit dans le message de groupe de
discussion :

Bonjour

Sub essai()
Set Sh2 = Sheets("feuil1")
x = Application.VLookup(13, Sh2.Range(("A29"),
Sh2.Range("A29").End(xlDown).End(xlToRight)), 2, False)
MsgBox x
End Sub

http://cjoint.com/?dvfzAbUogR

JB

On 20 mar, 21:13, "Jacques" <none> wrote:

mais c'est le même code que le mien, non?

dans le classeur sur cjoint.com ca marche si je lance la macro essai a
partir de la feuille Feuil1 où se trouve la table mais pas si je la
lance
à
partir de la feuille Feuil2

Un peu le même cas de figure chez moi. le bouton n'est pas sur la
feuille
"sh2" mais sur la feuille "sh" et le résultat de la recherche est écrit
dans
une feuille "sh1"
ca ne marche donc pas non plus chez moi quand je lance "essai" partir
d'une
autre feuille que "sh2"

"JB" a écrit dans le message de groupe de
discussion :

Bonjour,

Essai:

http://cjoint.com/?duhAVy57Tc

JB

On 20 mar, 00:09, "Jacques" <none> wrote:

Bonsoir,

J'essaie de définir une plage dont le nombre de lignes est variabl e

Si j'écris :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Lig ne,
0),
Sh2.Range("Liste_Entités"), 2, False)

Ca marche, la zone de recherche étant dénommée

mais si je remplace

Sh2.Range("Liste_Entités")

par

Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column))

cela donne ça :

= Application.VLookup(Sh.Range("Base_Globale").Cells(1).Offset(Lig ne,
0),
Sh2.Range(Cells(29, 1), Cells(Sh2.Range("A29").End(xlDown).Row,
Sh2.Range("A29").End(xlToRight).Column)), 2, False)

mais ca ne marche plus (la plage fait 4 colonnes et je cherche une
valeur
dans la 2ème colonne)

je ne trouve pas où est mon erreur

avez-vous une idée?

Merci- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte de s
messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -