OVH Cloud OVH Cloud

copier vers si vba

11 réponses
Avatar
lauxeti
Bonjour,

Je me heurte =E0 un souci

je souhaiterais copier une s=E9lection d'un classeur (a.xls) vers un
autre classeur (b.xls) dans la premi=E8re cellule vide de la ligne x et
ceci plusieurs fois (20) avec une s=E9lection diff=E9rente

ex
s=E9lection 1 : a,b,c
s=E9lection 2 : d,e,f
classeur a
classeur b
A1
a
copie ligne 1 derni=E8re cellule vide
b
c

e
copie ligne 5 derni=E8re cellule vide
f
g

...
Avez vous une id=E9e ?
Merci de vos r=E9ponses
Le Lauxeti

1 réponse

1 2
Avatar
MichD
Bonjour,

Copie toute la colonne A:A du fichier source vers le fichier de destination.
Chacune des données est copiée sur la même ligne sur la feuille de destination

La macro est dans ton classeur - Module 1 : http://cjoint.com/?AIzvyvOf073

Pour tester la procédure, tu peux ajouter un fichier vierge nommée "Classeur1"
et lancer la procédure.

Le nom des classeurs et des feuilles sont à corriger. C'est peut-être vrai si
l'organisation de tes données est différente de ton classeur modèle.

'------------------------------------------------------------
Sub test()
Dim ShSource As Worksheet, Mois As Integer
Dim ShDest As Worksheet, Y As Integer
Dim DerCol As Integer, C As Range

'En supposant que les 2 classeurs sont ouverts
'Le code est supposé d'être dans le classeur où
'sont les données à copier
Set ShSource = ThisWorkbook.Worksheets("Feuil1")
Set ShDest = Workbooks("Classeur1").Worksheets("Feuil1")

'Déterminer la Dernière Colonne Vide Feuille shDest
With ShDest
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column + 1
End With

'Copie des cellules de la feuille source vers la dernière colonne
'disponible de la feuille de destination. Chacune des données de
'la colonne A:A de la feuille source est copiée sur la même ligne
'dans la feuille de destination.

'Désactive les procédures événementielles
Application.EnableEvents = False
'Désactive le rafraîchissement de l'écran pendant l'exécution
Application.ScreenUpdating = False
With ShSource
'Ajoute le nom du mois au début de la nouvelle
'colonne sur la ligne2, Y = numéro du dernier mois ligne 2
Y = .Cells(2, .Cells(2, .Columns.Count).End(xlToLeft).Column).Column
'Le mois suivant(Numéro), celui à afficher
Mois = Month(DateValue("1 " & _
.Cells(2, Y) & " 2011")) + 1
'Inscription du mois dans la feuille de destination
ShDest.Cells(2, DerCol) = Format(DateSerial(2011, Mois, 1), "MMMM")

'Copie pour chacune des cellules de la colonne A3:Ax
For Each C In .Range("A3:A" & .Range("A65536").End(xlUp).Row)
With ShDest
.Cells(C.Row, DerCol).Value = C.Value
End With
Next
End With
Application.EnableEvents = False
Application.ScreenUpdating = False
End Sub
'------------------------------------------------------------


MichD
------------------------------------------
"lauxeti" a écrit dans le message de groupe de discussion :


On 25 sep, 12:20, Gloops wrote:
lauxeti a écrit, le 24/09/2011 17:22 :









> On 24 sep, 11:43, Gloops wrote:
>> lauxeti a écrit, le 24/09/2011 09:26 :

>>> On 24 sep, 08:20, Gloops wrote:
>>>> lauxeti a écrit, le 23/09/2011 17:16 :

>>>>> Bonjour,

>>>>> Je me heurte à un souci

>>>>> je souhaiterais copier une sélection d'un classeur (a.xls) vers un
>>>>> autre classeur (b.xls) dans la première cellule vide de la ligne x et
>>>>> ceci plusieurs fois (20) avec une sélection différente

>>>>> ex
>>>>> sélection 1 : a,b,c
>>>>> sélection 2 : d,e,f
>>>>> classeur a
>>>>> classeur b
>>>>> A1
>>>>> a
>>>>> copie ligne 1 dernière cellule vide
>>>>> b
>>>>> c

>>>>> e
>>>>> copie ligne 5 dernière cellule vide
>>>>> f
>>>>> g

>>>>> ...
>>>>> Avez vous une idée ?
>>>>> Merci de vos réponses
>>>>> Le Lauxeti

>>>>> Bonjour,

>>>> J'essaie de reformuler ce que j'ai compris.

>>>> On a sélectionné un champ dans la feuille active d'un classeur A.
>>>> Dans un classeur B, on va parcourir les lignes de la feuille active, et
>>>> sur chaque ligne, vers la première cellule de l'espace libre à droite,
>>>> coller la ligne correspondante de la sélection du classeur A : la
>>>> première ligne de la sélection du classeur A allant vers la ligne 1, et
>>>> pour chaque ligne suivante on descend d'une ligne.

>>>> Au passage on a bien pris note que les cellules copiées ne vont pas
>>>> nécessairement être alignées verticalement dans le classeur B.

>>> Bonjour,

>>> J'essaie de m'expliquer un peu plus

>>> Dans le classeur A , j'ai des données dans la colonne A , je
>>> sélectionne les différentes lignes concernées et je veux les copier
>>> dans le classeur B dans la première cellule vide (colonne x ) de la
>>> ligne 1, de la ligne 10
>>> ex:
>>> classeur A..........................Classeur B
>>> ..............colonne n.............................colonne
>>> 1...colonne 2...colonne 3...colonne x
>>> ligne 1. .a........................... ligne 11...... z..............
>>> z............z...............a
>>> ligne 2...b........................... ligne 12...... z..............
>>> z............z...............b
>>> ligne 3...c........................... ligne 13...... z..............
>>> z............z...............c
>>> ....
>>> ligne 10 f............................ligne 23...... z..............
>>> z............z...............f
>>> ligne 11..g...........................ligne 24...... z..............
>>> z............z..............g
>>> ligne 12..h...........................ligne 25...... z..............
>>> z............z..............h

>>> Ceci 20 fois

>>> j’espère que comme cela n c'est plus clair

>> Bon, alors on a un abc, ça si j'ai bien retenu du message précédent ça
>> vient de la première ligne de la source. Ah mais au fait, on dit que les
>> données sont dans la colonne A. abc ça fait trois colonnes, non ? C'est
>> quoi que j'ai mal compris ? Ou c'est le contenu d'une cellule qu'il faut
>> répartir dans trois ?

>> Alors le abc se trouve reporté, pour le a à la fin des lignes 1 et 11,
>> pour le b à la fin des lignes 2 et 12, pour le c à la fin des lignes 3
>> et 13.

>> Pourquoi 1 et 11 au fait, c'est systématiquement 10 lignes d'écart ?

>> Après on a def qui vient de la deuxième ligne de la source (même
>> question quant aux colonnes), on ne voit pas ça dans l'exemple mais je
>> suppose qu'on trouve ça, dans la cible, sur les lignes 4 et 14 pour le
>> d, 5 et 15 pour le e, 6 et 16 pour le f.

>> J'imagine que ghi arriveraient sur les lignes 7 à 9 et 17 à 19.

>> Est-ce qu'on dit que la source s'arrête là et que c'est ça qui fait
>> repartir à la ligne 11, puisqu'on est arrivé à la ligne 9 pour la fin et
>> qu'en laissant une ligne de marge ça fait repartir à la 11 ?
>> Ou qu'est-ce qui se passe si il y en a plus, vu qu'en ligne 11 on a déjà
>> mis quelque chose ?

>> Fonctionnellement ça représente quoi ?
>> Si ça se trouve en sachant à quoi ça sert ça serait plus facile à
>> comprendre ?

> Bonsoir à tous,

> J'ai fait un exemple ci joint j’espère que cela sera plus clair

>http://cjoint.com/?AIyrfxXV3xW
> Les lignes et colonnes du classeur B sont indicatives, les donnees du
> classeur A sont à copier (valeur en rouge ) dans le classeur B

> Merci

Ah oui il manque un truc, quand même. Quand doit-on réévaluer le numéro
de la colonne de destination ?
Au début on dit que c'est la colonne 4 parce que la ligne 1 est
renseignée jusqu'à la colonne 3, mais en ligne 2 il n'y a rien, et on
conserve le même numéro de colonne ...



La réévaluation a lieu chaque fin de mois (à défaut début du mois
suivant) et les données des n mois précédents sont effectivement
remplies.
Les explications précédentes étaient en effet donner trop rapidement
avec la seule préoccupation de la copie et du nombre de fois
voir fichier joint
Et (déjà ) merci à tous le monde

http://cjoint.com/?AIzsjHjQeCD
1 2