OVH Cloud OVH Cloud

Copie conditionnelle

7 réponses
Avatar
Michel
Bonjour,

Mon problème est le suivant:
Sur la feuille 1 sur la ligne 5 j'ai les valeurs suivantes :
Service |ACTION | Données | DAT | ARS | ASC | AST | NET | DMIS | EAS |MDV |
DCP | DPR | DPSA | DPI | DAT |....
Chacune de ces valeurs sont des titres de colonnes. Sauf qu'elles sont
issues d'un tableau dynamqie et donc ne sont pas toujours toutes présentes.
Je veux faire une recherche sur la ligne 5 où se trouvent ces données et
copier les colonnes correspondantes et les coller dans une autre feuille, on
va dire feuille2 où ces colonnes sont toutes présentes et fixes donc je peux
définir exactement l'endroit où je coller la colonne en question.

Par exemple la colonne DAT est en D2, ou DPSA est en V2....

Voici les bouts de code que j'ai :
Range("D5:O5").Select
Selection.Find(What:="NET", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

Range("..:.." & [..65536].End(xlUp).Row).Select
Cela pour copier juste la colonne pleine du tableau.

Quelqu'un peut il m'aider?

Je vous en remercie par avance.

7 réponses

Avatar
isabelle
bonjour Michel,

x = Sheets("Feuil1").Rows("5:5").Find(What:="NET", LookAt:=xlWhole).Column
y = Cells(65536, x).End(xlUp).Row
Sheets("Feuil1").Range(Cells(5, x), Cells(y, x)).Copy _
Destination:=Sheets("Feuil2").Range("H5")

isabelle


Bonjour,

Mon problème est le suivant:
Sur la feuille 1 sur la ligne 5 j'ai les valeurs suivantes :
Service |ACTION | Données | DAT | ARS | ASC | AST | NET | DMIS | EAS |MDV |
DCP | DPR | DPSA | DPI | DAT |....
Chacune de ces valeurs sont des titres de colonnes. Sauf qu'elles sont
issues d'un tableau dynamqie et donc ne sont pas toujours toutes présentes.
Je veux faire une recherche sur la ligne 5 où se trouvent ces données et
copier les colonnes correspondantes et les coller dans une autre feuille, on
va dire feuille2 où ces colonnes sont toutes présentes et fixes donc je peux
définir exactement l'endroit où je coller la colonne en question.

Par exemple la colonne DAT est en D2, ou DPSA est en V2....

Voici les bouts de code que j'ai :
Range("D5:O5").Select
Selection.Find(What:="NET", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate

Range("..:.." & [..65536].End(xlUp).Row).Select
Cela pour copier juste la colonne pleine du tableau.

Quelqu'un peut il m'aider?

Je vous en remercie par avance.



Avatar
Michel
Bonjour Isabelle,

Je ne sais comment vous remercier, ça marche du tonnerre. Vous venez de me
faire gagner un temps fou fou fou.

Je vous en remercie mille fois.

Cordialement,
Michel


bonjour Michel,

x = Sheets("Feuil1").Rows("5:5").Find(What:="NET", LookAt:=xlWhole).Column
y = Cells(65536, x).End(xlUp).Row
Sheets("Feuil1").Range(Cells(5, x), Cells(y, x)).Copy _
Destination:=Sheets("Feuil2").Range("H5")

isabelle


Bonjour,

Mon problème est le suivant:
Sur la feuille 1 sur la ligne 5 j'ai les valeurs suivantes :
Service |ACTION | Données | DAT | ARS | ASC | AST | NET | DMIS | EAS |MDV |
DCP | DPR | DPSA | DPI | DAT |....
Chacune de ces valeurs sont des titres de colonnes. Sauf qu'elles sont
issues d'un tableau dynamqie et donc ne sont pas toujours toutes présentes.
Je veux faire une recherche sur la ligne 5 où se trouvent ces données et
copier les colonnes correspondantes et les coller dans une autre feuille, on
va dire feuille2 où ces colonnes sont toutes présentes et fixes donc je peux
définir exactement l'endroit où je coller la colonne en question.

Par exemple la colonne DAT est en D2, ou DPSA est en V2....

Voici les bouts de code que j'ai :
Range("D5:O5").Select
Selection.Find(What:="NET", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate

Range("..:.." & [..65536].End(xlUp).Row).Select
Cela pour copier juste la colonne pleine du tableau.

Quelqu'un peut il m'aider?

Je vous en remercie par avance.






Avatar
isabelle
bonne continuation Michel

et au plaisir :-)
isabelle



Bonjour Isabelle,

Je ne sais comment vous remercier, ça marche du tonnerre. Vous venez de me
faire gagner un temps fou fou fou.

Je vous en remercie mille fois.

Cordialement,
Michel



bonjour Michel,

x = Sheets("Feuil1").Rows("5:5").Find(What:="NET", LookAt:=xlWhole).Column
y = Cells(65536, x).End(xlUp).Row
Sheets("Feuil1").Range(Cells(5, x), Cells(y, x)).Copy _
Destination:=Sheets("Feuil2").Range("H5")

isabelle



Bonjour,

Mon problème est le suivant:
Sur la feuille 1 sur la ligne 5 j'ai les valeurs suivantes :
Service |ACTION | Données | DAT | ARS | ASC | AST | NET | DMIS | EAS |MDV |
DCP | DPR | DPSA | DPI | DAT |....
Chacune de ces valeurs sont des titres de colonnes. Sauf qu'elles sont
issues d'un tableau dynamqie et donc ne sont pas toujours toutes présentes.
Je veux faire une recherche sur la ligne 5 où se trouvent ces données et
copier les colonnes correspondantes et les coller dans une autre feuille, on
va dire feuille2 où ces colonnes sont toutes présentes et fixes donc je peux
définir exactement l'endroit où je coller la colonne en question.

Par exemple la colonne DAT est en D2, ou DPSA est en V2....

Voici les bouts de code que j'ai :
Range("D5:O5").Select
Selection.Find(What:="NET", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate

Range("..:.." & [..65536].End(xlUp).Row).Select
Cela pour copier juste la colonne pleine du tableau.

Quelqu'un peut il m'aider?

Je vous en remercie par avance.








Avatar
Michel
Bonjour Isabelle,

J'ai repris votre code et ça donne ceci :
Sheets("Jours Hom").Activate
a1 = Sheets("Jours Hom").Rows("5:5").Find(What:="DAT",
LookAt:=xlWhole).Column
b1 = Cells(65536, a1).End(xlUp).Row
Sheets("Jours Hom").Range(Cells(6, a1), Cells(b1, a1)).Copy _
Destination:=Sheets("Portefeuille").Range("D3")

Je le fais pour toutes mes colonnes.
Maintenant, l'on me dit qu'il se peut que ca change dans 10 jours et donc
nouvelle colonne. Alors pour en faire le moins possible, je me dit : "Si ça
doit bouger au final, autant faire en sorte que le collage soit aussi
dynamique et je fais ceci :

Sheets("Jours Hom").Activate
a1 = Sheets("Jours Hom").Rows("5:5").Find(What:="DAT",
LookAt:=xlWhole).Column
b1 = Cells(65536, a1).End(xlUp).Row
ab1 = Sheets("Portefeuille").Rows("2:2").Find(What:="DAT",
LookAt:=xlWhole).Column
Sheets("Jours Hom").Range(Cells(6, a1), Cells(b1, a1)).Copy _
Destination:=Sheets("Portefeuille").Range(Cells(3, ab1))

Mais ça ne marche pas.
Est-il possible de m'aider à nouveau?
Avatar
isabelle
bien sur, peut tu me dire ce qui ne marche pas,
y a t'il un message d'erreur ?

isabelle

Bonjour Isabelle,

J'ai repris votre code et ça donne ceci :
Sheets("Jours Hom").Activate
a1 = Sheets("Jours Hom").Rows("5:5").Find(What:="DAT",
LookAt:=xlWhole).Column
b1 = Cells(65536, a1).End(xlUp).Row
Sheets("Jours Hom").Range(Cells(6, a1), Cells(b1, a1)).Copy _
Destination:=Sheets("Portefeuille").Range("D3")

Je le fais pour toutes mes colonnes.
Maintenant, l'on me dit qu'il se peut que ca change dans 10 jours et donc
nouvelle colonne. Alors pour en faire le moins possible, je me dit : "Si ça
doit bouger au final, autant faire en sorte que le collage soit aussi
dynamique et je fais ceci :

Sheets("Jours Hom").Activate
a1 = Sheets("Jours Hom").Rows("5:5").Find(What:="DAT",
LookAt:=xlWhole).Column
b1 = Cells(65536, a1).End(xlUp).Row
ab1 = Sheets("Portefeuille").Rows("2:2").Find(What:="DAT",
LookAt:=xlWhole).Column
Sheets("Jours Hom").Range(Cells(6, a1), Cells(b1, a1)).Copy _
Destination:=Sheets("Portefeuille").Range(Cells(3, ab1))

Mais ça ne marche pas.
Est-il possible de m'aider à nouveau?


Avatar
isabelle
rebonjour Michel,

remplace :
.Range(Cells(3, ab1))
par
.Cells(3, ab1)

isabelle

bien sur, peut tu me dire ce qui ne marche pas,
y a t'il un message d'erreur ?

isabelle


Bonjour Isabelle,

J'ai repris votre code et ça donne ceci :
Sheets("Jours Hom").Activate
a1 = Sheets("Jours Hom").Rows("5:5").Find(What:="DAT",
LookAt:=xlWhole).Column
b1 = Cells(65536, a1).End(xlUp).Row
Sheets("Jours Hom").Range(Cells(6, a1), Cells(b1, a1)).Copy _
Destination:=Sheets("Portefeuille").Range("D3")

Je le fais pour toutes mes colonnes.
Maintenant, l'on me dit qu'il se peut que ca change dans 10 jours et
donc nouvelle colonne. Alors pour en faire le moins possible, je me
dit : "Si ça doit bouger au final, autant faire en sorte que le
collage soit aussi dynamique et je fais ceci :

Sheets("Jours Hom").Activate
a1 = Sheets("Jours Hom").Rows("5:5").Find(What:="DAT",
LookAt:=xlWhole).Column
b1 = Cells(65536, a1).End(xlUp).Row
ab1 = Sheets("Portefeuille").Rows("2:2").Find(What:="DAT",
LookAt:=xlWhole).Column
Sheets("Jours Hom").Range(Cells(6, a1), Cells(b1, a1)).Copy _
Destination:=Sheets("Portefeuille").Range(Cells(3, ab1))

Mais ça ne marche pas.
Est-il possible de m'aider à nouveau?




Avatar
Michel
Isabelle,

Merci beaucoup, ca marche.

A bientot.


rebonjour Michel,

remplace :
..Range(Cells(3, ab1))
par
..Cells(3, ab1)

isabelle

bien sur, peut tu me dire ce qui ne marche pas,
y a t'il un message d'erreur ?

isabelle


Bonjour Isabelle,

J'ai repris votre code et ça donne ceci :
Sheets("Jours Hom").Activate
a1 = Sheets("Jours Hom").Rows("5:5").Find(What:="DAT",
LookAt:=xlWhole).Column
b1 = Cells(65536, a1).End(xlUp).Row
Sheets("Jours Hom").Range(Cells(6, a1), Cells(b1, a1)).Copy _
Destination:=Sheets("Portefeuille").Range("D3")

Je le fais pour toutes mes colonnes.
Maintenant, l'on me dit qu'il se peut que ca change dans 10 jours et
donc nouvelle colonne. Alors pour en faire le moins possible, je me
dit : "Si ça doit bouger au final, autant faire en sorte que le
collage soit aussi dynamique et je fais ceci :

Sheets("Jours Hom").Activate
a1 = Sheets("Jours Hom").Rows("5:5").Find(What:="DAT",
LookAt:=xlWhole).Column
b1 = Cells(65536, a1).End(xlUp).Row
ab1 = Sheets("Portefeuille").Rows("2:2").Find(What:="DAT",
LookAt:=xlWhole).Column
Sheets("Jours Hom").Range(Cells(6, a1), Cells(b1, a1)).Copy _
Destination:=Sheets("Portefeuille").Range(Cells(3, ab1))

Mais ça ne marche pas.
Est-il possible de m'aider à nouveau?