copie d'une ligne entiere en fonction de la derniere valeur d'une colonne

alpha_572

XLDnaute Nouveau
Bonjour,

Je galere comme un ane avec une idee que je n'arrive pas a concretiser.
Dans un fichier des plusieurs dizaine d'onglets, je cherche a faire une feuille de synthese.
Chaque feuille comporte des colonnes dans lesquels je mets des valeurs au fil du temps... (ligne pour le temps, colonne pour les differentes valeurs a saisir)
Dans la feuille de synthese, je voudrais recuperer les dernieres valeurs saisie de chaque onglet. En sachant que dans les feuilles, je ne saisie pas toutes les valeurs. Il y a donc beaucoup de case vides.

Au depart, j'ai fait 9^9... sur chaque colonne mais ca ne prend pas le terme "inf" qui apparait souvent
puis une matricielle
Mais cette formule matricielle ne fonctionne pas bien. D'un onglet a un autre ca marche plus. Pareille avec les colonnes... et je ne sais pas pourquoi
Bref je me suis rendu compte que de toute façon c'est pas cohérent parce que travailler par colonne va produire un tableau de synthese avec des valeurs qui ne sont pas issue de la meme ligne.
donc j'en arrive a me dire qu'il suffit que je cherche la derniere ligne de la colonne date, et que je recopie toute la ligne dans la feuille de synthese.
Et ce pour chaque onglet
Mais ca je ne sais plus faire.
J'ai besoin d'aide pour cela.
Quelqu'un aurit-il une idee pour faire cela?
 
Dernière modification par un modérateur:

Robert

XLDnaute Barbatruc
Repose en paix
Re : copie d'une ligne entiere en fonction de la derniere valeur d'une colonne

Bonjour Alpha, bonjour le forum,

Si la colonne des dates est A (=1), l'onglet de destination s'appelle Synthèse et tu colles dans la première cellule vide de la colonne A de cet onglet (tu adapteras le code) :

Code:
Dim LI As Integer
Dim DEST As Range

LI=Cells(Application.Rows.Count, 1).End(xlUp).Row
Set DEST=Sheets("Synthèse").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1,0)
Rows(LI).Copy DEST
 

alpha_572

XLDnaute Nouveau
Re : copie d'une ligne entiere en fonction de la derniere valeur d'une colonne

Merci pour la reponse, mais je ne comprends pas comment gerer tous les onglets.
Le tableau de synthese doit reprendre la dernieres ligne en date de tous les onglets.
Dans ton code, il n'y a pas de notion d'onglet, a part celui de destination.
Ce code est-il encore applicable dans ces conditions?
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : copie d'une ligne entiere en fonction de la derniere valeur d'une colonne

Bonjour le fil, bonjour le forum,

Oui désolé, j'avais oublié cette partie dans le code. Essaie comme ça :
Code:
Dim LI As Integer
Dim DEST As Range
Dim O As Worksheet

For Each O In Sheets
    If Not O.Name = "Syhtèse" Then
        LI = O.Cells(Application.Rows.Count, 1).End(xlUp).Row
        Set DEST = Sheets("Synthèse").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
        O.Rows(LI).Copy DEST
    End If
Next O
 

alpha_572

XLDnaute Nouveau
Re : copie d'une ligne entiere en fonction de la derniere valeur d'une colonne

Bonjour Alpha.

Le code de Robert répond à ta demande. Si tu souhaites aller plus dans le détail, il faudra joindre un fichier pour comprendre ton besoin.

Certes, mais je ne sais pas ou mettre ce code pour le tester.
Et de plus, c'est vrai que je n'ai pas precisé, les tableaux commencent seulement a la ligne 10 avec la ligne d'entetes
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : copie d'une ligne entiere en fonction de la derniere valeur d'une colonne

Re,

le code proposé dans le post #5 fonctionnera quelle que soit la ligne de début du tableau puisque la recherche part de la dernière ligne de l'onglet...
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : copie d'une ligne entiere en fonction de la derniere valeur d'une colonne

Re,

Je m'étais bien mélangé les pinceaux en écrivant Synthèse dans le code du post #5. À part ça, ça marche !... Regarde le fichier en pièce jointe (que tu n'as pas daigné fournir toi-même...)


Le code :
Code:
Sub Macro1()
Dim LI As Integer
Dim DEST As Range
Dim O As Worksheet

For Each O In Sheets
    If Not O.Name = "Synthèse" Then
        LI = O.Cells(Application.Rows.Count, 1).End(xlUp).Row
        Set DEST = Sheets("Synthèse").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
        O.Rows(LI).Copy DEST
    End If
Next O
End Sub

Le fichier :
 

Pièces jointes

  • Alpha_v01.xlsm
    26.6 KB · Affichages: 35

alpha_572

XLDnaute Nouveau
Re : copie d'une ligne entiere en fonction de la derniere valeur d'une colonne

Re...

Merci pour l'exemple...
et pour le message (pas subliminal), mais je n'avais pas le bon PC pour le poster.
On est tres bride sur les postes de travail, du coup il fallait que j'attendes d'etre sur mon PC perso...

Voila le fichier a traiter

Par contre, le bug que j'ai rencontré, je l'ai en ayant retapé toute la formule, donc pas de copier collé

J'ai vite fait essayé le tien, mais je crois que je vais avoir un soucis.
Dans la synthese, je vais me retrouver avec des lignes de valeurs sans entetes pour les valeurs , et sans colonne pour la localisation.
C'est possible de copier le nom de l'onglet en colonne A et coller les valeurs a partir de la colonne B?
En y reflechissant, ca oblige a coller les info toujours au meme endroit peut etre...
 

Pièces jointes

  • fichier essai synthese.xlsm
    87.7 KB · Affichages: 29

Robert

XLDnaute Barbatruc
Repose en paix
Re : copie d'une ligne entiere en fonction de la derniere valeur d'une colonne

Re,

En pièce jointe la v02. Les anciennes valeurs sont d'abord effacées avant d'être remplacées par les nouvelles....
Clique sur le bouton Synthèse de l'onglet Synthèse.

Le code :

Code:
Sub Macro1()
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim O As Worksheet 'déclare la variable O (Onglet)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Sheets("Synthèse").Range("A2").CurrentRegion.Offset(2, 0).ClearContents 'efface d'eventuelles anciennes données
For Each O In Sheets 'boucle sur tous les onglets O du classeur
    If Not O.Name = "Synthèse" Then 'condition : si le nom de l'onglet n'est pas "Synthèse"
        LI = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la ligne LI de la dernière cellule éditée en colonne 1 (=A) de l'onglet O
        'définit la cellule de destination DEST (première ligne vide de la colonne 1 (=A) de l'onglet "Synthèse"
        Set DEST = Sheets("Synthèse").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
        DEST.Value = O.Name 'renvoie dans DEST le nom de l'onglet
        O.Cells(LI, 1).Resize(1, 50).Copy DEST.Offset(0, 1) 'renvoie dans DEST décalée d'une colonne à droite les 50 premières colonnes de la ligne LI
    End If 'fin de la condition
Next O 'prochain onglet de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub

Le fichier :
 

Pièces jointes

  • Alpha_v02.xlsm
    110.8 KB · Affichages: 38

alpha_572

XLDnaute Nouveau
Re : copie d'une ligne entiere en fonction de la derniere valeur d'une colonne

Re-salut

J'ai 2 petits soucis en utilisant cette magnifique macro qui marche d'enfer.
En fait, je me suis rendu compte que la ligne est recopiée mais la copie inclue un calcul qui n'a plus sa justification dans le tableau de synthese. Il faudrait coller uniquement les valeurs plutot que les formules.

Le deuxieme proble eest que la macro copié dans d'autres classeurs me créée des liens entre fichier. Par contre, je ne peux pas rompre les liaisons meme apres suppression du fichier source.
Dans la macro y a pas de référence au fichier d'origine.
Je ne comprends pas ce qui se passe.
Il y a le module et le workbook.
que dois je copier de ces deux la?
c'est peut etre de la que viens mon probleme
 

alpha_572

XLDnaute Nouveau
Re : copie d'une ligne entiere en fonction de la derniere valeur d'une colonne

Re-salut

J'ai 2 petits soucis en utilisant cette magnifique macro qui marche d'enfer.
En fait, je me suis rendu compte que la ligne est recopiée mais la copie inclue un calcul qui n'a plus sa justification dans le tableau de synthese. Il faudrait coller uniquement les valeurs plutot que les formules.

Le deuxieme proble eest que la macro copié dans d'autres classeurs me créée des liens entre fichier. Par contre, je ne peux pas rompre les liaisons meme apres suppression du fichier source.
Dans la macro y a pas de référence au fichier d'origine.
Je ne comprends pas ce qui se passe.
Il y a le module et le workbook.
que dois je copier de ces deux la?
c'est peut etre de la que viens mon probleme

Je viens de trouver un enorme probleme dans cette macro. Enfin un probleme pour moi.
A chaque fois que je lance la macro, ca me flingue la mise en page de tous les onglets du classeur.

Pour l'histoire, j'ai 5 fichiers avec au moins 25 onglets dans chaque. Ca fait du job a tout reprendre...
Si une bonne âme à une info d'ou ca vient..
 

Discussions similaires

Statistiques des forums

Discussions
311 723
Messages
2 081 934
Membres
101 844
dernier inscrit
pktla