Définition de plage en VBA

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #5225441
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


Jacques
Le #5225411
ok j'essaie

merci


"JB" 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


Jacques
Le #5224351
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" 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


JB
Le #5224131
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" 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 -



Jacques
Le #5224111
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" 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" 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 -



JB
Le #5223911
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" 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" 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 -




Jacques
Le #5332201
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" 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" 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" 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 -




JB
Le #5332191
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" 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" 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" 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 -





Publicité
Poster une réponse
Anonyme