Macro Excel : copier coller, mais sélectionner automatiquement la cellule de collage

Wizz_gva

XLDnaute Nouveau
Bonjour,

Je suis directeur financier d'un groupe et je voudrais pouvoir compiler toutes les balances des sociétés de mon groupe sur un seul onglet.

Je dispose donc d'un onglet par société (7 en tout) et d'un onglet "TOUTES SOCIETES" sur lequel je fais aujourd'hui un copier coller manuel, société par société, les unes à la suite des autres.

J'aimerais développer une macro qui me permette d'aller chercher chacune des balances (ça je sais faire) et qui les colle les unes à la suite des autres (ça je sais pas faire...).

Je sais faire une macro1 qui va chercher le champ correspondant à la société1 pour aller le coller dans l'onglet "TOUTES SOCIETES", en cellule A1 admettons. Mais comment indiquer à la macro qu'elle doit ensuite se positionner à la première cellule vide en colonne A, qui suit ce premier copier/coller, car le nombre de lignes est variable en fonction des sociétés ?

Exemple : la premier champ fait n lignes, ma dernière ligne occupée est donc la ligne n, si je colle depuis A1. IL faut donc que je dise à la macro "Tu te positionnes en A1 + n lignes" et ensuite tu colles la balance de la société 2. Puis tu vas chercher la cellule vide suivante... Etc...

Comment faire ?

Merci de votre aide

François
 

Papou-net

XLDnaute Barbatruc
Re : Macro Excel : copier coller, mais sélectionner automatiquement la cellule de col

Bonjour Wizz_gva, et bienvenue,

Pour déterminer la 1ère cellule vide dans une colonne, il faut utiliser le code suivant :

Code:
Lg=Range("A65536").End(xlUp).Row + 1

Cette instruction affecte à la variable Lg le n° de la 1ère ligne vide. Elle remonte depuis la dernière cellule (A65536) jusqu'à la 1ère cellule non vide : il suffit donc de lui ajouter 1 pour descendre d'une ligne.

Espérant avoir répondu.

Cordialement.
 

Gorfael

XLDnaute Barbatruc
Re : Macro Excel : copier coller, mais sélectionner automatiquement la cellule de col

Salut Wizz_gva et le forum
Un exemple de macro :
Code:
Sub test()
'Déclaration =======================================
Dim F_S As Worksheet, F_D As Worksheet
'MEI ===============================================
Set F_D = Sheets("TOUTES SOCIETES")     'Feuille destination
For Each F_S In ThisWorkbook.Sheets
'pour chaque feuille de ce fichier (fichier contenant la macro)
    If F_S.Name <> F_D.Name Then
    'si la feuille a un nom différent de celle de destination, alors
        F_S.Range(F_S.[A1], F_S.Cells(Rows.Count, "A").End(xlUp)).EntireRow.Copy _
            F_D.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
        'copier de la ligne 1 à dernière non-vide en A de F_S et les coller à partir de la
        'ligne suivant la dernière cellule non-vide en A de F_D
    End If
    'limite du test
Next F_S
'passer à la feuille suivante
End Sub
Ne connaissant que ce qui est dit dans le sujet, on s'appuie sur la colonne A qui doit toujours être remplie. Si ce n'est pas forcément le cas, il faut trouver la colonne qui nous servira de référence.
N'en déplaise à Papou-net (salutation), je préfére utiliser Rows.Count, à la place de 65536 : la limite de ligne ayant été modifiée depuis l'apparition des versions supérieures à Excel 2003.
A+
 

Papou-net

XLDnaute Barbatruc
Re : Macro Excel : copier coller, mais sélectionner automatiquement la cellule de col

N'en déplaise à Papou-net (salutation), je préfére utiliser Rows.Count, à la place de 65536 : la limite de ligne ayant été modifiée depuis l'apparition des versions supérieures à Excel 2003.A+

Bonsoir Gorfael,

Ta remarque, loin de me déplaire, est fort pertinente. Il est vrai que je n'ai encore jamais connu d'application utilisant un nombre de lignes dépassant les limites d'XL2003, mais néanmoins cela reste toujours possible. Avec ta solution, on évite d'avoir à adapter le code en cas de transposition dans une version plus récente.

Merci pour ton apport.

Cordialement.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
283 605
Messages
1 852 922
Membres
151 980
dernier inscrit
Kara2579
Haut Bas