OVH Cloud OVH Cloud

Transférer données

6 réponses
Avatar
Denys
Bonjour =E0 tous,

Une =E2me g=E9n=E9reuse m'a un jour fourni le code suivant afin=20
de transf=E9rer des donn=E9es d'une feuille =E0 l'autre.=20
J'essaie de la modifier, mais j'ai un probl=E8me..

Je dois choisir des cellules qui ne sont pas c=F4te =E0 c=F4te.=20
En fait, j'ai besoin de 12 cellules r=E9parties sur 130=20
colonnes, mais sur la m=EAme ligne....
Sauriez-vous comment faire? Voici le code....


Sub Imprimer()
Dim Res As Variant, Rg As Range
Dim Dest As Range

With Worksheets("Invoice")
Set Dest =3D .Range("L52")
End With
With Worksheets("Database")
ActiveCell.Offset(0, -1).Resize(, 19).Copy Dest
End With
End Sub

Merci pour votre aide....

Denys

6 réponses

Avatar
Jean-Claude
Salut,
Une idée comme ça,
Utilise un tableau dans lequel tu entre les 12 colonne dont tu as besoin
puis
une boucle for next
For i=Lbound(tableau) to Ubound(tableau)
cells(Ligne,tableau(i)).value=valeur
Next i

Le problème apparait pour la valeur à copier qui doit certainement être
différente d'un i à l'autre
Peut-être utiliser un principe simmilaire
En espérant t'avoir aidé
a+
Jc
"Denys" a écrit dans le message de
news:3bf701c4a64c$5e5f0f70$
Bonjour à tous,

Une âme généreuse m'a un jour fourni le code suivant afin
de transférer des données d'une feuille à l'autre.
J'essaie de la modifier, mais j'ai un problème..

Je dois choisir des cellules qui ne sont pas côte à côte.
En fait, j'ai besoin de 12 cellules réparties sur 130
colonnes, mais sur la même ligne....
Sauriez-vous comment faire? Voici le code....


Sub Imprimer()
Dim Res As Variant, Rg As Range
Dim Dest As Range

With Worksheets("Invoice")
Set Dest = .Range("L52")
End With
With Worksheets("Database")
ActiveCell.Offset(0, -1).Resize(, 19).Copy Dest
End With
End Sub

Merci pour votre aide....

Denys
Avatar
michdenis
Bonjour Denys,

Je ne comprends pas ce que tu essaies de faire !!

Quel est ta plage source ? Une ou des cellules ? Comment sont-elles réparties dans la feuille source ?

Quelle est ta plage destination ? Comment savoir ou reconnaître les 12 cellules parmi les 130 cellules sur la même ligne ?
Comment arrive-t-on à reconnaître la bonne ligne où la copie doit s'effectuer ?



Salutations!





"Denys" a écrit dans le message de news:3bf701c4a64c$5e5f0f70$
Bonjour à tous,

Une âme généreuse m'a un jour fourni le code suivant afin
de transférer des données d'une feuille à l'autre.
J'essaie de la modifier, mais j'ai un problème..

Je dois choisir des cellules qui ne sont pas côte à côte.
En fait, j'ai besoin de 12 cellules réparties sur 130
colonnes, mais sur la même ligne....
Sauriez-vous comment faire? Voici le code....


Sub Imprimer()
Dim Res As Variant, Rg As Range
Dim Dest As Range

With Worksheets("Invoice")
Set Dest = .Range("L52")
End With
With Worksheets("Database")
ActiveCell.Offset(0, -1).Resize(, 19).Copy Dest
End With
End Sub

Merci pour votre aide....

Denys
Avatar
Denys
Bonjour Denis,

Oooopppss... Je vois que je me suis mal exprimé...

Voici: sur la page Database, il y a plusieurs lignes (plus
de 5000) où sont entrées des données du client. Ces
données sont réparties sur 130 colonnes, à savoir Nom,
adresse, contact etc.....

Des données financières sont aussi entrées genre montant
annuel, fréquence de paiement, no de chèque etc...

Lorsque je veux facturer le client, je dois prendre
certaines cellules qui sont toutes sur la même ligne, et
les transporter sur la page Invoice, l'une à côté des
autres....

La macro que j'ai rempli cette fonction, sauf qu'elle
prend une cellule active, et avec la fonction Resize copie
les cellules de la page database à la page Invoice...Mais
ce sont les cellules à la suite de la cellule active

Une fois sur la page Invoice sur la ligne 52 j'ai disons
la cellule A4 où je dois écrire le nom de la compagnie qui
a comme formule = L52, A5 où se trouve l'adresse = M52, etc

Où L52 est le nom de la compagnie transférée de la page
Database.

L'utilisateur qui veut imprimer une facture clique sur un
bouton de commande. Un userform apparait et il doit écrire
le no de la compagnie. Excel fait un find, et sélectionne
la cellule où se trouve le no de compagnie. De là, la
macro Sub Imprimer transfère les données à la page
Invoice, et ensuite elle les imprimera.

Mon problème est que les cellules que je dois transférer
se trouvent dans la colonne A, B, D, F, G, H, L, V, X,
AA,AB, BX. Toutes sur la même rangée.

La façon la plus simple serait de faire un resize de 78 (à
epu près) mais je me demandais s'il n'y avait pas moyen de
ne choisir que les cellules que l'on veut transférer...

J'espère que c'est plus clair ainsi...

Merci

Denys
-----Original Message-----
Bonjour Denys,

Je ne comprends pas ce que tu essaies de faire !!

Quel est ta plage source ? Une ou des cellules ? Comment
sont-elles réparties dans la feuille source ?


Quelle est ta plage destination ? Comment savoir ou
reconnaître les 12 cellules parmi les 130 cellules sur la

même ligne ?
Comment arrive-t-on à reconnaître la bonne ligne où la
copie doit s'effectuer ?




Salutations!





"Denys" a écrit
dans le message de news:3bf701c4a64c$5e5f0f70

$
Bonjour à tous,

Une âme généreuse m'a un jour fourni le code suivant afin
de transférer des données d'une feuille à l'autre.
J'essaie de la modifier, mais j'ai un problème..

Je dois choisir des cellules qui ne sont pas côte à côte.
En fait, j'ai besoin de 12 cellules réparties sur 130
colonnes, mais sur la même ligne....
Sauriez-vous comment faire? Voici le code....


Sub Imprimer()
Dim Res As Variant, Rg As Range
Dim Dest As Range

With Worksheets("Invoice")
Set Dest = .Range("L52")
End With
With Worksheets("Database")
ActiveCell.Offset(0, -1).Resize(, 19).Copy Dest
End With
End Sub

Merci pour votre aide....

Denys


.



Avatar
Denys
Bonjour Jean-Claude,

Merci pour ton idée.... Ca m'a amené à quelque chose qui
pourrait fonctionner....

J'essaie, et je reviens

Merci pour ton temps

Denys


-----Original Message-----
Salut,
Une idée comme ça,
Utilise un tableau dans lequel tu entre les 12 colonne
dont tu as besoin

puis
une boucle for next
For i=Lbound(tableau) to Ubound(tableau)
cells(Ligne,tableau(i)).value=valeur
Next i

Le problème apparait pour la valeur à copier qui doit
certainement être

différente d'un i à l'autre
Peut-être utiliser un principe simmilaire
En espérant t'avoir aidé
a+
Jc
"Denys" a écrit
dans le message de

news:3bf701c4a64c$5e5f0f70$
Bonjour à tous,

Une âme généreuse m'a un jour fourni le code suivant afin
de transférer des données d'une feuille à l'autre.
J'essaie de la modifier, mais j'ai un problème..

Je dois choisir des cellules qui ne sont pas côte à côte.
En fait, j'ai besoin de 12 cellules réparties sur 130
colonnes, mais sur la même ligne....
Sauriez-vous comment faire? Voici le code....


Sub Imprimer()
Dim Res As Variant, Rg As Range
Dim Dest As Range

With Worksheets("Invoice")
Set Dest = .Range("L52")
End With
With Worksheets("Database")
ActiveCell.Offset(0, -1).Resize(, 19).Copy Dest
End With
End Sub

Merci pour votre aide....

Denys


.



Avatar
michdenis
Bonjour Denys,


'--------------------------------------
Sub Imprimer()

Dim Rg As Range, L As Long
Dim Arr(), Dest As Range, A As Integer

'Les colonnes regroupées dans un tableau
Arr = Array("A", "B", "D", "F", "G", _
"H", "L", "V", "X", "AA", "AB", "BX")

With Worksheets("Invoice")
'Première cellule de la plage
'de destination
Set Dest = .Range("L52")
End With
Application.EnableEvents = False
With Worksheets("Database")
.Activate
'Détermine la ligne de la cellule active
L = ActiveCell.Row
For A = 0 To UBound(Arr)
.Range(Arr(A) & L).Copy Dest.Offset(0, A)
Next
End With
Application.EnableEvents = True
Set Rg = Nothing
End Sub
'--------------------------------------


Salutations!



"Denys" a écrit dans le message de news:02d401c4a654$03857c80$
Bonjour Denis,

Oooopppss... Je vois que je me suis mal exprimé...

Voici: sur la page Database, il y a plusieurs lignes (plus
de 5000) où sont entrées des données du client. Ces
données sont réparties sur 130 colonnes, à savoir Nom,
adresse, contact etc.....

Des données financières sont aussi entrées genre montant
annuel, fréquence de paiement, no de chèque etc...

Lorsque je veux facturer le client, je dois prendre
certaines cellules qui sont toutes sur la même ligne, et
les transporter sur la page Invoice, l'une à côté des
autres....

La macro que j'ai rempli cette fonction, sauf qu'elle
prend une cellule active, et avec la fonction Resize copie
les cellules de la page database à la page Invoice...Mais
ce sont les cellules à la suite de la cellule active

Une fois sur la page Invoice sur la ligne 52 j'ai disons
la cellule A4 où je dois écrire le nom de la compagnie qui
a comme formule = L52, A5 où se trouve l'adresse = M52, etc

Où L52 est le nom de la compagnie transférée de la page
Database.

L'utilisateur qui veut imprimer une facture clique sur un
bouton de commande. Un userform apparait et il doit écrire
le no de la compagnie. Excel fait un find, et sélectionne
la cellule où se trouve le no de compagnie. De là, la
macro Sub Imprimer transfère les données à la page
Invoice, et ensuite elle les imprimera.

Mon problème est que les cellules que je dois transférer
se trouvent dans la colonne A, B, D, F, G, H, L, V, X,
AA,AB, BX. Toutes sur la même rangée.

La façon la plus simple serait de faire un resize de 78 (à
epu près) mais je me demandais s'il n'y avait pas moyen de
ne choisir que les cellules que l'on veut transférer...

J'espère que c'est plus clair ainsi...

Merci

Denys
-----Original Message-----
Bonjour Denys,

Je ne comprends pas ce que tu essaies de faire !!

Quel est ta plage source ? Une ou des cellules ? Comment
sont-elles réparties dans la feuille source ?


Quelle est ta plage destination ? Comment savoir ou
reconnaître les 12 cellules parmi les 130 cellules sur la

même ligne ?
Comment arrive-t-on à reconnaître la bonne ligne où la
copie doit s'effectuer ?




Salutations!





"Denys" a écrit
dans le message de news:3bf701c4a64c$5e5f0f70

$
Bonjour à tous,

Une âme généreuse m'a un jour fourni le code suivant afin
de transférer des données d'une feuille à l'autre.
J'essaie de la modifier, mais j'ai un problème..

Je dois choisir des cellules qui ne sont pas côte à côte.
En fait, j'ai besoin de 12 cellules réparties sur 130
colonnes, mais sur la même ligne....
Sauriez-vous comment faire? Voici le code....


Sub Imprimer()
Dim Res As Variant, Rg As Range
Dim Dest As Range

With Worksheets("Invoice")
Set Dest = .Range("L52")
End With
With Worksheets("Database")
ActiveCell.Offset(0, -1).Resize(, 19).Copy Dest
End With
End Sub

Merci pour votre aide....

Denys


.



Avatar
Denys
Bonjour Denis,

Magnifique !!! Tout fonctionne à merveille !!! Comme
d'habitude...Cela va me servir pour plusieurs autres
applications!!!!

Merci infiniment

Denys


-----Message d'origine-----
Bonjour Denys,


'--------------------------------------
Sub Imprimer()

Dim Rg As Range, L As Long
Dim Arr(), Dest As Range, A As Integer

'Les colonnes regroupées dans un tableau
Arr = Array("A", "B", "D", "F", "G", _
"H", "L", "V", "X", "AA", "AB", "BX")

With Worksheets("Invoice")
'Première cellule de la plage
'de destination
Set Dest = .Range("L52")
End With
Application.EnableEvents = False
With Worksheets("Database")
.Activate
'Détermine la ligne de la cellule active
L = ActiveCell.Row
For A = 0 To UBound(Arr)
.Range(Arr(A) & L).Copy Dest.Offset(0, A)
Next
End With
Application.EnableEvents = True
Set Rg = Nothing
End Sub
'--------------------------------------


Salutations!



"Denys" a écrit
dans le message de news:02d401c4a654$03857c80

$
Bonjour Denis,

Oooopppss... Je vois que je me suis mal exprimé...

Voici: sur la page Database, il y a plusieurs lignes
(plus

de 5000) où sont entrées des données du client. Ces
données sont réparties sur 130 colonnes, à savoir Nom,
adresse, contact etc.....

Des données financières sont aussi entrées genre montant
annuel, fréquence de paiement, no de chèque etc...

Lorsque je veux facturer le client, je dois prendre
certaines cellules qui sont toutes sur la même ligne, et
les transporter sur la page Invoice, l'une à côté des
autres....

La macro que j'ai rempli cette fonction, sauf qu'elle
prend une cellule active, et avec la fonction Resize
copie

les cellules de la page database à la page Invoice...Mais
ce sont les cellules à la suite de la cellule active

Une fois sur la page Invoice sur la ligne 52 j'ai disons
la cellule A4 où je dois écrire le nom de la compagnie
qui

a comme formule = L52, A5 où se trouve l'adresse = M52,
etc


Où L52 est le nom de la compagnie transférée de la page
Database.

L'utilisateur qui veut imprimer une facture clique sur un
bouton de commande. Un userform apparait et il doit
écrire

le no de la compagnie. Excel fait un find, et sélectionne
la cellule où se trouve le no de compagnie. De là, la
macro Sub Imprimer transfère les données à la page
Invoice, et ensuite elle les imprimera.

Mon problème est que les cellules que je dois transférer
se trouvent dans la colonne A, B, D, F, G, H, L, V, X,
AA,AB, BX. Toutes sur la même rangée.

La façon la plus simple serait de faire un resize de 78


epu près) mais je me demandais s'il n'y avait pas moyen
de

ne choisir que les cellules que l'on veut transférer...

J'espère que c'est plus clair ainsi...

Merci

Denys
-----Original Message-----
Bonjour Denys,

Je ne comprends pas ce que tu essaies de faire !!

Quel est ta plage source ? Une ou des cellules ? Comment
sont-elles réparties dans la feuille source ?


Quelle est ta plage destination ? Comment savoir ou
reconnaître les 12 cellules parmi les 130 cellules sur la

même ligne ?
Comment arrive-t-on à reconnaître la bonne ligne où la
copie doit s'effectuer ?




Salutations!





"Denys" a écrit
dans le message de news:3bf701c4a64c$5e5f0f70

$
Bonjour à tous,

Une âme généreuse m'a un jour fourni le code suivant
afin


de transférer des données d'une feuille à l'autre.
J'essaie de la modifier, mais j'ai un problème..

Je dois choisir des cellules qui ne sont pas côte à
côte.


En fait, j'ai besoin de 12 cellules réparties sur 130
colonnes, mais sur la même ligne....
Sauriez-vous comment faire? Voici le code....


Sub Imprimer()
Dim Res As Variant, Rg As Range
Dim Dest As Range

With Worksheets("Invoice")
Set Dest = .Range("L52")
End With
With Worksheets("Database")
ActiveCell.Offset(0, -1).Resize(, 19).Copy Dest
End With
End Sub

Merci pour votre aide....

Denys


.




.