OVH Cloud OVH Cloud

EXCEL VBA MACRO - Selectionner donnée croisement ligne colonne (variable)

3 réponses
Avatar
erger-avon
Bonjour à tous,

Suite à mes recherches je n'ai malheureusement pas trouvé de réponse, je me permets donc de vous contacter afin d'avoir de l'aide !

Je travail actuellement sur la création d'un fichier excel qui doit être automatisé au maximum, à l'aide de TCD, et je débute la partie VBA.

J'associe notamment sur une page un tcd avec des champs statiques (en rechercheV), et lorsque mon TCD change je souhaite faire en sorte que la mise en page de la partie statique soit automatiquement refaite.

Je fonctionne notamment avec ce type de macro pour selectionner les cases qui m'interessent :

Cells.Find(What:="total général", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate


Cells.Find(What:="montant en euros", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate

J'y suis donc arrivé, mais il me reste un point bloquant :

- Je désire sélectionner un range allant d'une case (case recherchée "total général", via la macro ci-dessus) jusqu'à une autre case, sur la même ligne, qui est l'intersection avec une la colonne où l'on pourra retrouver le terme "% Actifs"


Mise en situation :

A B C D E F % Actifs
Champ1
Champ2
Champ3
Champ4
Champ5
Total général x x x x x x xx

J'aimerais donc que ma macro selectionne la ligne Total général et les x. Soit jusqu'à la case xx (l'intersection avec la colonne où on peut trouver %Actifs).

J'ai essayé avec deux macro différentes mais qui me pose les problèmes suivants :

- Une fois positionné sur la case "total général":
Range(Selection, Selection.End(xlToRight)).Select)
MAIS ça ne marche pas quand il y a une des case intermédiaire qui est vide.

- Une fois positionné sur la case "total" général : utilisation de "ActiveCell.Offset (0, 7).
MAIS ça ne marche plus si mon nombre de colonne change.

C'est pourquoi idéalement je souhaiterai trouver une formulation de ce style : Range (ActiveCell, Croisement ligne "total général" et ligne "% actifs).

En vous remerciant mille fois par avance !

3 réponses

Avatar
isabelle
bonjour erger-avon,

Sub Macro1()
rw = Application.Match("Total général", Range("A:A"), 0)
pg = Application.Match("% Actifs", Range("2:2"), 0)
MsgBox Cells(rw, pg)
End Sub

isabelle

Le 2013-06-05 10:09, erger-avon a écrit :
Bonjour à tous,

Suite à mes recherches je n'ai malheureusement pas trouvé de réponse, je me
permets donc de vous contacter afin d'avoir de l'aide !

Je travail actuellement sur la création d'un fichier excel qui doit être
automatisé au maximum, à l'aide de TCD, et je débute la partie VBA.

J'associe notamment sur une page un tcd avec des champs statiques (en
rechercheV), et lorsque mon TCD change je souhaite faire en sorte que la mise en
page de la partie statique soit automatiquement refaite.

Je fonctionne notamment avec ce type de macro pour selectionner les cases qui
m'interessent :

Cells.Find(What:="total général", After:¬tiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:úlse, SearchFormat:úlse).Activate


Cells.Find(What:="montant en euros", After:¬tiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:úlse, SearchFormat:úlse).Activate

J'y suis donc arrivé, mais il me reste un point bloquant :

- Je désire sélectionner un range allant d'une case (case recherchée "total
général", via la macro ci-dessus) jusqu'à une autre case, sur la même ligne, qui
est l'intersection avec une la colonne où l'on pourra retrouver le terme "%
Actifs"


Mise en situation :

A B C D E F
% Actifs
Champ1
Champ2
Champ3
Champ4
Champ5
Total général x x x x x x
xx

J'aimerais donc que ma macro selectionne la ligne Total général et les x. Soit
jusqu'à la case xx (l'intersection avec la colonne où on peut trouver %Actifs).


J'ai essayé avec deux macro différentes mais qui me pose les problèmes suivants
:

- Une fois positionné sur la case "total général":
Range(Selection, Selection.End(xlToRight)).Select)
MAIS ça ne marche pas quand il y a une des case intermédiaire qui est vide.

- Une fois positionné sur la case "total" général : utilisation de
"ActiveCell.Offset (0, 7).
MAIS ça ne marche plus si mon nombre de colonne change.

C'est pourquoi idéalement je souhaiterai trouver une formulation de ce style :
Range (ActiveCell, Croisement ligne "total général" et ligne "% actifs).

En vous remerciant mille fois par avance !

Avatar
isabelle
pour selectionner la plage,

Sub Macro1()
rw = Application.Match("Total général", Range("A:A"), 0)
pg = Application.Match("% Actifs", Range("2:2"), 0)
Application.Goto Range(Cells(rw, 1), Cells(rw, pg))
End Sub

isabelle

Le 2013-06-06 22:53, isabelle a écrit :
bonjour erger-avon,

Sub Macro1()
rw = Application.Match("Total général", Range("A:A"), 0)
pg = Application.Match("% Actifs", Range("2:2"), 0)
MsgBox Cells(rw, pg)
End Sub

isabelle

Le 2013-06-05 10:09, erger-avon a écrit :
Bonjour à tous,

Suite à mes recherches je n'ai malheureusement pas trouvé de réponse,
je me
permets donc de vous contacter afin d'avoir de l'aide !

Je travail actuellement sur la création d'un fichier excel qui doit être
automatisé au maximum, à l'aide de TCD, et je débute la partie VBA.

J'associe notamment sur une page un tcd avec des champs statiques (en
rechercheV), et lorsque mon TCD change je souhaite faire en sorte que
la mise en
page de la partie statique soit automatiquement refaite.

Je fonctionne notamment avec ce type de macro pour selectionner les
cases qui
m'interessent :

Cells.Find(What:="total général", After:¬tiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:= _
xlNext, MatchCase:úlse, SearchFormat:úlse).Activate


Cells.Find(What:="montant en euros", After:¬tiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:= _
xlNext, MatchCase:úlse, SearchFormat:úlse).Activate

J'y suis donc arrivé, mais il me reste un point bloquant :

- Je désire sélectionner un range allant d'une case (case recherchée
"total
général", via la macro ci-dessus) jusqu'à une autre case, sur la même
ligne, qui
est l'intersection avec une la colonne où l'on pourra retrouver le
terme "%
Actifs"


Mise en situation :

A B C D
E F
% Actifs
Champ1
Champ2
Champ3
Champ4
Champ5
Total général x x x x x x
xx

J'aimerais donc que ma macro selectionne la ligne Total général et les
x. Soit
jusqu'à la case xx (l'intersection avec la colonne où on peut trouver
%Actifs).


J'ai essayé avec deux macro différentes mais qui me pose les problèmes
suivants
:

- Une fois positionné sur la case "total général":
Range(Selection, Selection.End(xlToRight)).Select)
MAIS ça ne marche pas quand il y a une des case intermédiaire qui est
vide.

- Une fois positionné sur la case "total" général : utilisation de
"ActiveCell.Offset (0, 7).
MAIS ça ne marche plus si mon nombre de colonne change.

C'est pourquoi idéalement je souhaiterai trouver une formulation de ce
style :
Range (ActiveCell, Croisement ligne "total général" et ligne "% actifs).

En vous remerciant mille fois par avance !

Avatar
Jacky
Bonjour,

C'est pourquoi idéalement je souhaiterai trouver une formulation de ce style :
Range (ActiveCell, Croisement ligne "total général" et ligne "% actifs).



Ce classeur de Alain Vallon devrait répondre à la question
http://cjoint.com/?CFllFGfdnAT

--
Salutations
JJ


"erger-avon" a écrit dans le message de news:

Bonjour à tous,

Suite à mes recherches je n'ai malheureusement pas trouvé de réponse, je me
permets donc de vous contacter afin d'avoir de l'aide !

Je travail actuellement sur la création d'un fichier excel qui doit être
automatisé au maximum, à l'aide de TCD, et je débute la partie VBA.

J'associe notamment sur une page un tcd avec des champs statiques (en
rechercheV), et lorsque mon TCD change je souhaite faire en sorte que la mise en
page de la partie statique soit automatiquement refaite.

Je fonctionne notamment avec ce type de macro pour selectionner les cases qui
m'interessent :

Cells.Find(What:="total général", After:¬tiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:úlse, SearchFormat:úlse).Activate


Cells.Find(What:="montant en euros", After:¬tiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:úlse, SearchFormat:úlse).Activate

J'y suis donc arrivé, mais il me reste un point bloquant :

- Je désire sélectionner un range allant d'une case (case recherchée "total
général", via la macro ci-dessus) jusqu'à une autre case, sur la même ligne, qui
est l'intersection avec une la colonne où l'on pourra retrouver le terme "%
Actifs"


Mise en situation :

A B C D E F
% Actifs
Champ1
Champ2
Champ3
Champ4
Champ5
Total général x x x x x x
xx

J'aimerais donc que ma macro selectionne la ligne Total général et les x. Soit
jusqu'à la case xx (l'intersection avec la colonne où on peut trouver %Actifs).


J'ai essayé avec deux macro différentes mais qui me pose les problèmes suivants
:

- Une fois positionné sur la case "total général":
Range(Selection, Selection.End(xlToRight)).Select)
MAIS ça ne marche pas quand il y a une des case intermédiaire qui est vide.

- Une fois positionné sur la case "total" général : utilisation de
"ActiveCell.Offset (0, 7).
MAIS ça ne marche plus si mon nombre de colonne change.

C'est pourquoi idéalement je souhaiterai trouver une formulation de ce style :
Range (ActiveCell, Croisement ligne "total général" et ligne "% actifs).

En vous remerciant mille fois par avance !