Suite fusionner plusieurs classeur excel

Résolu/Fermé
spaissia Messages postés 15 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 12 février 2010 - 11 févr. 2010 à 18:27
 gilles - 12 févr. 2010 à 19:26
Bonjour, un nouveau problème se pose pour la fusion de classeur excel :
Récemment, j'avais eu comme formule :
=INDIRECT("'PLOT DATA "&ENT(LIGNE()/15)+1&"'!"&CAR(COLONNE()+64)&MOD(LIGNE()-1;15)+1)
Qui avait très bien marché.
Aujourd'hui, j'ai un fichier excel avec des feuilles nommés DATA qui vont de 1 à 176 : j'ai donc 176 feuilles dans un fichier excel.
Dans chaque feuille, j'ai des données qui s'étalent de la colonne A à la colonne S, et jusqu'à la ligne 50 (au maximum). Je voudrais récupérer les données des 176 feuilles sur une seule feuille excel (que je crée dans le même fichier excel de départ) de la colonne A à la colonne M.
Malheureusement, je n'arrive pas à adapter la formule ci-dessus pour faire cela.
Quelqu'un pourrait-il m'aider ?
Je joins le lien du fichier sur lequel je travail : http://ifile.it/2vxyf7d
A voir également:

8 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 691
11 févr. 2010 à 21:46
bonjour

Le fichier n'est pas accessible sur ce site, si tu pouvais nous le mettre sur http://www.cijoint.fr/ puis nous mettre le lien généré ici ce serait plus facile.
0
spaissia Messages postés 15 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 12 février 2010
11 févr. 2010 à 22:05
Sans problème, voici le lien :
http://www.cijoint.fr/cjlink.php?file=cj201002/cijD2Nz5rz.xls
J'ai oublié de mentionner précédemment que j'ai besoin de deux choses : d'une part une formule qui permettent de récupérer toutes les lignes (de 1 à 50) et une autre formule pour récupérer uniquement les lignes de 40 à 50
(le plus souvent, il y a 49 lignes, mais certaines feuille en contiennent 50)
Merci beaucoup pour ton aide.
0
Bonsoir à tous,
Je viens de rentrer sur votre discussion.
Je me disais qu'avec quelques lignes de VBA on pourrait le faire (je pense).
Du style, on compte le nombre de feuilles (exemple on a 100 feuilles) puis on boucle de i = 2 à 100
en activant à chaque fois l'onglet(i). On sélectionne la zone A2:N & j ( étant le nombre de ligne utilisé dans le l'onglet sélectionné) et on le copie dans le dernier onglet (par exemple RECAP).

A plus
Gilles
0
spaissia Messages postés 15 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 12 février 2010
11 févr. 2010 à 22:45
merci Gilles, mais je suis un novice vrai de vrai (VBA???), je pensais qu'on pouvait modifier le formule que j'ai affichée dans le premier message.
Spaissia
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 691
11 févr. 2010 à 22:46
bonjour

En modifiant légèrement la première formule que je t'avais donnée cela fonctionne pour 50 lignes
=INDIRECT("'DATA "&ENT(LIGNE()/50)+1&"'!"&CAR(COLONNE()+64)&MOD(LIGNE()-1;50)+1)


Je regardes pour récupérer 40-50 @+
0
spaissia Messages postés 15 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 12 février 2010
11 févr. 2010 à 22:51
Je viens d'essayer, c'est nickel pour les 50 lignes.
Génial, merci beaucoup gbinforme!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Si jamais tu souhaites faire du VBA, j'ai fait l'exemple que tu as envoyé.
Si tu veux, je le mets en pièce jointe (d'abord je vais commenter le code).
L'intérêt est de compter le nombre de cellule d'une feuille à chaque fois et peut importe le nombre, on le sélectionne et on le copie sur la dernière feuille.

Désolé pour tous les deux mais je ne sais pas le faire en formule.
Gilles
0
spaissia Messages postés 15 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 12 février 2010
11 févr. 2010 à 23:01
Oui, ça m'intéresse de voir ce que cela peut être.
Merci Gilles.
0
http://www.cijoint.fr/cjlink.php?file=cj201002/cijipl0S6N.xls

Regarde si le résultat est ce que tu attendais. Si çà va, je t'explique sinon on peut adapter

Gilles
0
spaissia Messages postés 15 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 12 février 2010
11 févr. 2010 à 23:12
Oui, absolument, c'est bien ça, ça copie bien le nombre de lignes qu'il y a dans chaque feuille (49 ou 50).
Merci aussi pour ton aide Gilles.
Donc le VBA est où?
Spaissia
0
gilles > spaissia Messages postés 15 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 12 février 2010
11 févr. 2010 à 23:18
Ci dessous le code VBA
Par contre dans mes macros, je n'ai pas prévu de copier la ligne des titres. Tu dois le faire avant.
On pourrait le prévoir dans le code car si tu l'oublies çà peut planter ( ce n'est pas grave).

Pour voir le code VBA dans excel 2003 : outils / ouvrir Visual Basic / sur la gauche descendre dans module et ouvrir le module présent pour voir le code
dans excel 2007 aller dans développeur / premier bouton à gauche.

Ci desssous le code utilisé

Gilles

Sub fusionner()
'variable qui va contenir le nombre feuille
Dim compteur As Integer
compteur = Sheets.Count 'compte les feuilles

'boucle de la feuille 2 (ou on commence à avoir les données) jusqu'a nombre de feuille -2
For i = 2 To compteur - 2
'activation de la feuille
Sheets(i).Activate
'appel de la méthode selectionner
selectionner

Next


End Sub

Sub selectionner()
'variable qui va contenir le nombre de ligne d'une feuille
Dim rangee As Integer

If Range("A2").Value = "" Then
'on sort de la méthose car il n'y a pas données à copier
Else
Range("A1").Select
Selection.End(xlDown).Select
rangee = ActiveCell.Row
'j'ai déterminé plus haut le nombre de ligne dans la variable rangee
Range("A2:M" & rangee).Select
'selection de la zone A2:M & rangee
Selection.Copy
'activation de l'onglet final
Sheets("données fusionnées").Select
'positionnement sur la première cellule libre
ActiveSheet.Range("A1").Select
If Range("A2").Value = "" Then
Range("A2").Select
Else
'on atteint la derniere cellule de donnee et on se positionne sur la ligne du dessous
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
End If
'on est positionné et on colle
ActiveSheet.Paste
End If
End Sub
0
spaissia Messages postés 15 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 12 février 2010 > gilles
11 févr. 2010 à 23:24
Je tente devoir ça comme tu m'indiques, par contre j'ai du mal à suivre.
Si je veux appliquer cela à un autre fichier excel, on fait comment?
Est-ce qu'on peut adapter pour avoir uniquement les lignes de 40 à 50 dans chaque classeur?
Spaissia.
0
Gilles > spaissia Messages postés 15 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 12 février 2010
11 févr. 2010 à 23:42
J'ai essayé de répondre à ta question mais tout à planter.
Si je comprend bien tu voudrais rajouter les lignes 40 à 50 sur un onglet qui contient déjà les données de 1 à 40.

Gilles
0
spaissia Messages postés 15 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 12 février 2010 > Gilles
12 févr. 2010 à 00:32
En fait, j'aimerai récupérer sur un onglet les lignes de 1 à 50 et sur un deuxième onglet les ligne 40 à 50.
En fait, je ne sais pas encore si je vais devoir faire un contrôle sur toute les données (les 50 lignes) ou sur les 11 dernière ligne (40 à 50). En fait, ces données représentent des fixations oculaires échantillonnées toute les 20 ms sur une durée de 950 ms à chaque fois (il y en a 176, d'où les 176 feuilles excel.
Spaissia
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 691
11 févr. 2010 à 23:10
bonjour

pour récupérer 40-50
=INDIRECT("'DATA "&ENT(LIGNE()/11)+1&"'!"&CAR(COLONNE()+64)&MOD(LIGNE();11)+40)
0
spaissia Messages postés 15 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 12 février 2010
11 févr. 2010 à 23:18
Encore merci gbinforme, ça marche aussi nickel.
Long vie à ce forum d'entraide!!!
0