BESOIN D'AIDE URGENTE MACROS EXCEL 2003

Fermé
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009 - 6 nov. 2009 à 12:20
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 16 nov. 2009 à 11:12
Bonjour,
je viens vers vous pour trouver une solution à mon GROS problème pour créer une macro sur Excel.
Je dois faire en sorte de rapatrier des données de quatre tableaux excel à ramener sur un seul.
Deux d'entre eux ont exactement les même colonnes et deux autres non.
Je dois donc pouvoir sélectionner les colonnes que je veux ramener et cela doit se faire après automatiquement, les données à la suite les unes des autres.
On m'a dit que je pouvais faire ça avec une macro qui fait une boucle... après je comprenais plus.
Mon problème est que l'on m'a embaucher pour ce poste et que j'ai un mois pour réussir ça ou je pense que j'ai de grande chance de dégager.
En espérant que quelqu'un me vienne en aide.
A voir également:

26 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
6 nov. 2009 à 14:20
Bonjour,
Tout d'abord ces macros ne sont pas de moi... Récupérées sur Internet peut être ici. Désolé pour les sources, mais franchement j'aurais du les noter.

Bon c'est une bonne piste pour toi, afin de ne pas perdre ton job...
Tes 4 fichiers doivent être dans un même répertoire. Rien d'autre dans ce répertoire.
La macro te demande :
1- le répertoire
2- l'extension de tes fichiers (taper xls pour fichiers excel)
3- pour chaque fichier ouvert : demande de sélectionner la plage à copier.

Le résultat apparait sur le document avec en gras rouge le chemin + nom du fichier copié et en dessous ce que vous aurez demandé.
Bon courage

A oui le lien : https://www.cjoint.com/?lgonl4agMi
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
6 nov. 2009 à 14:37
Déjà merci pour cette réponse aussi rapide.
Le petit problème que je n'ai pas précisé c'est que ces fichiers ne proviennent pas du même pc.
Ils proviennent de quatre pc différents, mais sur le même réseau, seul les répertoires changent.
De plus, même si je pense qu'avec votre réponse, je me rapproche de la solution, il faudrait que cela se fasse automatique dès l'ouverture du tableau excel "cible".
Car ce tableau qui récupère toutes les données est prévus pour mon responsable, qui doit en un seul fichiers voir toutes les données.
J'espère que je suis clair (je suis pas sur lol) et encore merci de votre aide.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
6 nov. 2009 à 14:53
C'est encore plus facile... Les chemins d'accès et noms de fichiers sont fixes?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
6 nov. 2009 à 15:16
Le lien : https://www.cjoint.com/?lgplEwJbo4

Démarches :
1- Ouvrir le classeur autoriser les macros
2- ALT + F11
remplacer :
- les 2 NomFic par le chemin complet + nom + extension du fichier 1 à ouvrir (un exemple est indiqué)
- les 2 NomFic2 par le chemin complet + nom + extension du fichier 2 à ouvrir (un exemple est indiqué)
etc jusqu'à NomFic4
- remplacer les nom du classeur 1, 2, 3, 4 par les noms + extension des fichiers à ouvrir
- remplacer les "A1:G5000" par la plage du fichier source concerné par la copie.
- enlever toutes les ' de début de lignes
- fermer VBA avec la croix
- enregistrer le fichier
le fermer et l'ouvrir...
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
6 nov. 2009 à 16:49
Merci beaucoup pour votre aide, j'ai pris le fichier et les démarches à suivre ; je vais les tester chez moi et je donnerais des nouvelles dès lundi.
0
Bonjour,
je n'arrive pas à faire marcher cette macro.
Je ne sais pas si je rentre bien les données, j'ai mis C:\Documents and Settings\rperez\Mes documents\essai\base boulot1.xls" et ainsi de suite pour les autres classeurs.
J'ai mis des copies des classeurs excel sur mes documents pour faire des essais.
Après je ne comprends pas "- remplacer les "A1:G5000" par la plage du fichier source concerné par la copie. "
Si vous pouviez encore m'aider.
Merci
0

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

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
9 nov. 2009 à 11:10
Bonjour,
remplacer les "A1:G5000" En fait, dans vos 4 fichiers vous ne voulez pas copier coller les 256 colonnes et quelques 65000 lignes. Vous ne voulez qu'une plage de cellules. C'est donc par cette plage que vous devez remplacer dans la macro les "A1:G5000"...
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
9 nov. 2009 à 11:48
Ben en fin de compte je ne sais pas, car les tableaux que je dois importer sur ma feuille, sont des tableaux qui sont alimentés tous les jours.
Et j'espère que j'ai mis au on endroit la cible de mon tableau base boulot1.xls
0
pou pouille Messages postés 207 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 juillet 2012 31
9 nov. 2009 à 12:16
bonjour, peut etre essayer quelquechose dans ce genre ( cela compte le nombre de ligne dans le tableau)
dim Nb_lignes as variant
Nb_lignes=cells(rows.count,1).end(xlup).row
'remplacer "A1:G5000" par :
"A1:G" & Nblignes
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
9 nov. 2009 à 12:17
Alors je viens de voir un erreur sur la macro que je t'ai donné... Pour que la plage soit variable, les tableaux étant alimentés tous les jours, je te l'ai refaite et ça donne :
Sub importer_donnees ()
Dim derlig as Integer, dercol as integer
ActiveSheet.Range("A2:AZ65536").ClearContents
Workbooks.Open Filename:=NomFic '(exemple : "C:\Documents and Settings\Bureau\Nouveau dossier\augmentation.xls")
With Workbooks("ouvrir documents.xls").Sheets("Feuil1")
.Range("A65536").End(xlUp).Offset(2, 0) = NomFic
.Range("A65536").End(xlUp).Font.Bold = True
.Range("A65536").End(xlUp).Font.ColorIndex = 3
End With
derlig = Range("A1").SpecialCells(xlCellTypeLastCell).Row
dercol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
Workbooks(Nom du classeur exemple : "augmentation.xls").ActiveSheet.Range(Cells(1, 1),Cells(derlig, dercol)).Copy Workbooks("ouvrir documents.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 0)
Workbooks(Nom du classeur).Close

Workbooks.Open Filename:=NomFic2 '(exemple : "C:\Documents and Settings\Bureau\Nouveau dossier\augmentation.xls")
With Workbooks("ouvrir documents.xls").Sheets("Feuil1")
.Range("A65536").End(xlUp).Offset(2, 0) = NomFic2
.Range("A65536").End(xlUp).Font.Bold = True
.Range("A65536").End(xlUp).Font.ColorIndex = 3
End With
derlig = Range("A1").SpecialCells(xlCellTypeLastCell).Row
dercol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
Workbooks(Nom du classeur exemple : "augmentation.xls").ActiveSheet.Range(Cells(1, 1),Cells(derlig, dercol)).Copy Workbooks("ouvrir documents.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 0)
Workbooks(Nom du classeur2).Close

Workbooks.Open Filename:=NomFic3 '(exemple : "C:\Documents and Settings\Bureau\Nouveau dossier\augmentation.xls")
With Workbooks("ouvrir documents.xls").Sheets("Feuil1")
.Range("A65536").End(xlUp).Offset(2, 0) = NomFic3
.Range("A65536").End(xlUp).Font.Bold = True
.Range("A65536").End(xlUp).Font.ColorIndex = 3
End With
derlig = Range("A1").SpecialCells(xlCellTypeLastCell).Row
dercol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
Workbooks(Nom du classeur exemple : "augmentation.xls").ActiveSheet.Range(Cells(1, 1),Cells(derlig, dercol)).Copy Workbooks("ouvrir documents.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 0)
Workbooks(Nom du classeur3).Close

Workbooks.Open Filename:=NomFic4 '(exemple : "C:\Documents and Settings\Bureau\Nouveau dossier\augmentation.xls")
With Workbooks("ouvrir documents.xls").Sheets("Feuil1")
.Range("A65536").End(xlUp).Offset(2, 0) = NomFic4
.Range("A65536").End(xlUp).Font.Bold = True
.Range("A65536").End(xlUp).Font.ColorIndex = 3
End With
derlig = Range("A1").SpecialCells(xlCellTypeLastCell).Row
dercol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
Workbooks(Nom du classeur exemple : "augmentation.xls").ActiveSheet.Range(Cells(1, 1),Cells(derlig, dercol)).Copy Workbooks("ouvrir documents.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 0)
Workbooks(Nom du classeur4).Close
End Sub
Et j'espère que j'ai mis au on endroit la cible de mon tableau base boulot1.xls
Peu importe ou se trouve ton/tes fichiers. Le pricipal étant d'indiquer dans la macro (en gras ci dessus) les bons chemins de tes 4 fichiers.
Démarches :
- Ouvre un classeur vide, enregistrer sous : ouvrir documents.xls
- copier/ coller la macro ci dessus dans un module (ALT+F11, Insertion/Modules)
- modifier les chemins des 4 fichiers à "importer"
- Fermer la fenêtre Visual Basic
- Enregistrer
- Tester : ALT+F8 choisir : importer_donnees et "exécuter"
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
9 nov. 2009 à 14:07
Je suis désolé mais je bloque, je sais pas si c'est parce que je panique mais j'y arrive pas.
Il arrête pas de me mettre "Erreur de compilation : Attendu : fin d'instruction"
Si vous avez encore un peu de temps, je vous mets une copie de ce que je fais.
En sachant que pour aller plus vite je n'ai pris que deux bases à importer qui se nomment "baseboulot1" et "baseboulot2" qui doivent être importer dans "baseboulot".

Sub importer_donnees()
Dim derlig As Integer, dercol As Integer
ActiveSheet.Range("A2:AZ65536").ClearContents
Workbooks.Open Filename:=NomFic C:\Documents and Settings\rperez\Mes documents\essai\baseboulot1.xls
With Workbooks("baseboulot.xls").Sheets("Feuil1")
.Range("A65536").End(xlUp).Offset(2, 0) = NomFic
.Range("A65536").End(xlUp).Font.Bold = True
.Range("A65536").End(xlUp).Font.ColorIndex = 3
End With
derlig = Range("A1").SpecialCells(xlCellTypeLastCell).Row
dercol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
Workbooks baseboulot1.xls.ActiveSheet.Range(Cells(1, 1),Cells(derlig, dercol)).Copy Workbooks baseboulot.xls.Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 0)
Workbooks(Nom du classeur).Close

Workbooks.Open Filename:=NomFic2 C:\Documents and Settings\rperez\Mes documents\essai\base boulot2.xls
With Workbooks("baseboulot.xls").Sheets("Feuil1")
.Range("A65536").End(xlUp).Offset(2, 0) = NomFic2
.Range("A65536").End(xlUp).Font.Bold = True
.Range("A65536").End(xlUp).Font.ColorIndex = 3
End With
derlig = Range("A1").SpecialCells(xlCellTypeLastCell).Row
dercol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
Workbooks baseboulot2.xls.ActiveSheet.Range(Cells(1, 1),Cells(derlig, dercol)).Copy Workbooks baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 0)
Workbooks(Nom du classeur2).Close

End Sub

Je suis désolé d'être aussi nul, mais encore merci de votre aide.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
9 nov. 2009 à 14:20
Essaye ceci :

Sub importer_donnees()
Dim derlig As Integer, dercol As Integer
ActiveSheet.Range("A2:AZ65536").ClearContents
Workbooks.Open Filename:="C:\Documents and Settings\rperez\Mes documents\essai\baseboulot1.xls"
With Workbooks("baseboulot.xls").Sheets("Feuil1")
.Range("A65536").End(xlUp).Offset(2, 0) = NomFic
.Range("A65536").End(xlUp).Font.Bold = True
.Range("A65536").End(xlUp).Font.ColorIndex = 3
End With
derlig = Range("A1").SpecialCells(xlCellTypeLastCell).Row
dercol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
Workbooks("baseboulot1.xls").ActiveSheet.Range(Cells(1, 1),Cells(derlig, dercol)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 0)
Workbooks("baseboulot1.xls").Close
Workbooks.Open Filename:="C:\Documents and Settings\rperez\Mes documents\essai\base boulot2.xls"
With Workbooks("baseboulot.xls").Sheets("Feuil1")
.Range("A65536").End(xlUp).Offset(2, 0) = NomFic2
.Range("A65536").End(xlUp).Font.Bold = True
.Range("A65536").End(xlUp).Font.ColorIndex = 3
End With
derlig = Range("A1").SpecialCells(xlCellTypeLastCell).Row
dercol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
Workbooks("baseboulot2.xls").ActiveSheet.Range(Cells(1, 1),Cells(derlig, dercol)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 0)
Workbooks("baseboulot2.xls").Close
End Sub
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
9 nov. 2009 à 14:42
MERCI BEAUCOUP, ça marche.
Si je peux abuser, comment je lui dit de ne pas prendre la première ligne, vu que c'est l'entête des tableaux ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745 > itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
9 nov. 2009 à 14:49
Explication dans cette ligne de code : Workbooks("baseboulot1.xls").ActiveSheet.Range(Cells(1, 1),Cells(derlig, dercol)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 0)
Cells(1, 1) représente la cellule A1. Donc on sélectionne la plage("A1:Dern_col,Dern_ligne"). Pour ne pas prendre en compte la 1ère ligne, il faut que la plage sélectionnée commence en A2 soit :
Workbooks("baseboulot1.xls").ActiveSheet.Range(Cells(2, 1),Cells(derlig, dercol)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 0)
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
9 nov. 2009 à 14:43
Et aussi, est ce que c'est possible qu'il exécute la macro dès l'ouverture de mon tableau ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
9 nov. 2009 à 14:54
Oui c'est possible. Ouvres ton classeur, ALT + F11 dans la petite fenêtre en haut à droite tu vois :
Feuil1(Sheets1)
Feuil2(Sheets2)
Feuil3(Sheets3)
This Workbook
Double clic sur This Workbook
2 listes déroulantes : (général) et (déclarations)
en général choisir WorkBook
en déclarations : WorkBook_open
Le code suivant apparait :

Private Sub Workbook_Open()

End Sub
Placer entre ces deux lignes la macro écrite plus haut ou on aura préalablement enlevé les lignes :
"Sub importer_donnees ()"
et
"End Sub"
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
9 nov. 2009 à 14:47
Arf!!!
Encore un souci, je vois qu'il ferme automatiquement mes tableaux sources lorsque je lance la macro.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
9 nov. 2009 à 14:55
Oui c'est fait exprès. Il n'y a pas d'utilité à les laisser ouvert...
Pour qu'ils ne se ferment pas il convient d'enlever les lignes :
WorkBooks("gnagnagna").Close
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
9 nov. 2009 à 15:26
Un énorme merci à vous, je commence à me dire que je vais réussir à présenter un projet grâce à vous.
Est ce que je peux encore abuser et vous poser un problème supplémentaire ?
Les deux autres tableaux que je dois importer n'ont pas exactement les mêmes colonnes, est ce que je peux choisir les colonnes que je souhaite importer ?
Je croise les doigts pour que vous me disiez que c'est possible.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745 > itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
9 nov. 2009 à 15:27
oui

Comment souhaitez vous les sélectionner? Une boîte de dialogue s'ouvrant après l'ouverture du classeur concerné?
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
9 nov. 2009 à 15:47
Ben en fin de compte, une fois que je lui aurait dit qu'elle colonne il devra importer (à la macro), ça ne changera plus.
Ces quatre tableaux devront s'importer automatiquement (vu que c'est mon boss qui aura la lecture de ce tableau final).
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745 > itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
9 nov. 2009 à 15:53
Le choix des colonnes se fait ici :
Workbooks("baseboulot1.xls").ActiveSheet.Range(Cells(1, 1),Cells(derlig, dercol)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 0)
Cells(1, 1) et Cells(derlig, dercol) constituent le point de départ et de fin de la plage sélectionnée.
Cells(1, 1) = A1
Cells(derlig, dercol) = dernière cellule en bas à droite de ta feuille

Si tu veux sélectionner les colonnes B et C (par exemple)
Cells(1, 3) = C1
Cells(derlig, 4) = dernière cellule non vide de la colonne D

Donc tu auras :
Workbooks("baseboulot1.xls").ActiveSheet.Range(Cells(1, 3),Cells(derlig, 4)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 0)
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
9 nov. 2009 à 16:21
Non le module tu le supprimes, si tout ton code est dans This workbook...

Pour copier le contenu de la colonne C et le placer dans le fichier "destination" colonne D:

Workbooks("baseboulot1.xls").ActiveSheet.Range(Cells(1, 3),Cells(derlig, 3)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(2, 3)
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
9 nov. 2009 à 16:33
Tout à l'air de marcher, je n'en reviens pas, je vais continuer à tester chez moi et je te tiendrais au courant.
Franchement c'est génial, mille fois merci.
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
10 nov. 2009 à 10:01
Bonjour,
je reviens encore vers toi parce qu'une chose ne fonctionne pas.
Je ne comprends pas, mais quand je mets ça :
"Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 1), Cells(derlig, 1)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(1, 0)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 2), Cells(derlig, 2)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(1, 1)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 4), Cells(derlig, 4)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(1, 2)"
la première colonne se place bien en A, mais ma deuxième colonne se place en dessous en colonne B, au lieu d'à côté.
1
3
5
27/10/2009
27/10/2009
27/10/2009
Et je voulais savoir aussi si c'est possible de lui demander de trier automatiquement dans mon tableau d'importation sur la colonne que je souhaite ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
10 nov. 2009 à 10:14
Salut,
'Fectivement... Pour remédier à cela il faut "mémoriser" le numéro de la ligne ou tu veux que tout se colle :
Dim numligne as integer
With Workbooks("baseboulot.xls").Sheets("Feuil1")
numlign = .Range("A65536").End(xlUp).Offset(1, 0).Row
End With
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 1), Cells(derlig, 1)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A" & numligne)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 2), Cells(derlig, 2)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("B" & numligne)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 4), Cells(derlig, 4)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("D" & numligne)

si c'est possible de lui demander de trier automatiquement oui mais tout dépends quoi comment pourquoi?
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
10 nov. 2009 à 10:38
Ça ne marche pas, j'ai mis comme ça :
"Workbooks.Open Filename:="C:\Documents and Settings\rperez\Mes documents\essai\baseboulot3.xls"
Dim numligne As Integer
With Workbooks("baseboulot.xls").Sheets("Feuil1")
numlign = .Range("A65536").End(xlUp).Offset(1, 0).Row
End With
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 1), Cells(derlig, 1)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A" & numligne)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 2), Cells(derlig, 2)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("B" & numligne)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 4), Cells(derlig, 4)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("C" & numligne)"

Sinon pour le tri, il faudrait qu'il me fasse un tri croissant sur la colonne A par exemple.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745 > itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
10 nov. 2009 à 10:50
Ou cela bloque t'il? Quel est le message d'erreur?

Salut pou pouille,
Non il ne faut pas enlever ce point. En fait la macro, pour l'instant, a comme classeur actif "baseboulot3.xls". Or nous voulons "mémoriser" la dernière ligne de la feuille 1 du classeur baseboulot.xls. D'où le point.
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
10 nov. 2009 à 10:57
Il me met : "Erreur d'exécution '1004':Erreur définie par l'application ou par l'objet"
Et quand je clic sur de Débogage il me souligne en jaune la ligne :
"Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 1), Cells(derlig, 1)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A" & numligne)"

Merci aussi pour ton aide pou pouille, je ne t'avais pas dit merci hier lors de ton premier message.
0
pou pouille Messages postés 207 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 juillet 2012 31 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
10 nov. 2009 à 11:04
méacoulpa, j'avais pas bien fait attention.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745 > itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
10 nov. 2009 à 11:36
Hou pinaize!!! Dur dur de trouver cette erreur... En gras ci dessous...

Ça ne marche pas, j'ai mis comme ça :
"Workbooks.Open Filename:="C:\Documents and Settings\rperez\Mes documents\essai\baseboulot3.xls"
Dim numligne As Integer
With Workbooks("baseboulot.xls").Sheets("Feuil1")
numlign = .Range("A65536").End(xlUp).Offset(1, 0).Row
End With
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 1), Cells(derlig, 1)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A" & numligne)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 2), Cells(derlig, 2)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("B" & numligne)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 4), Cells(derlig, 4)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("C" & numligne)"


pou pouille, merci de te joindre à nous. Pour répondre à ton interrogation, l'ouverture d'un classeur le rends de suite activé. En fait, classeur actif = dernier classeur ouvert.
0
pou pouille Messages postés 207 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 juillet 2012 31
10 nov. 2009 à 10:45
je viens de lire qu'il fallait d'abord activer la feuille, avant la fonction(je suis pas sure de ca)
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
10 nov. 2009 à 11:54
Ça marche, incroyable !!! MERCI

Je peux abuser par rapport au tri ?
Si tu as encore un peu de temps bien sur.
0
pou pouille Messages postés 207 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 juillet 2012 31
10 nov. 2009 à 11:58
lors d'un enregistrement macro voici le code qui est généré par excel :
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

je sais pas si tous les parametres sont utiles.
et surtour choisir la "sélection "
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
10 nov. 2009 à 12:09
AH purée non, j'ai une erreur.
J'ai ma cellule A1 qui normalement est l'entête de mon tableau qui vient d'être remplacée par une donnée.
1 Date d'enregist Date courrier
1 27/10/2009 13/10/2009
3 27/10/2009 13/10/2009
au lieu de
N° Date d'enregist Date courrier
1 27/10/2009 13/10/2009
3 27/10/2009 13/10/2009
0
pou pouille Messages postés 207 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 juillet 2012 31
10 nov. 2009 à 12:12
c'est normale puisque
selection
il selectionne tout le tableau ,
donc déja il faut que tu choisisse la plage de la séléction, ensuite tu décal tu remplace le A1 par A2
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
10 nov. 2009 à 12:14
Pour moi, le tri ne devrait pas se faire automatiquement à l'ouverture. C'est un choix que tu devrais laisser à l'utilisateur...
Mais effectivement, on peux faire une macro dans ce sens...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
10 nov. 2009 à 12:51
Un exemple de ce qui peux être fait : ici
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
10 nov. 2009 à 13:35
Excuse moi pijaku mais je comprends pas, pourquoi au début tout marchait bien et là le fait de choisir des colonnes à insérer fait tout merder ?
Mais surtout, je ne comprends pas où je dois faire ce changement dont tu me parles A1 en A2 ?

Private Sub Workbook_Open()
Dim derlig As Integer, dercol As Integer
ActiveSheet.Range("A2:AZ65536").ClearContents

Workbooks.Open Filename:="C:\Documents and Settings\rperez\Mes documents\essai\baseboulot1.xls"
With Workbooks("baseboulot.xls").Sheets("Feuil1")
.Range("A65536").End(xlUp).Offset(2, 0) = NomFic
.Range("A65536").End(xlUp).Font.Bold = True
.Range("A65536").End(xlUp).Font.ColorIndex = 3
End With
derlig = Range("A1").SpecialCells(xlCellTypeLastCell).Row
dercol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
Workbooks("baseboulot1.xls").ActiveSheet.Range(Cells(2, 1), Cells(derlig, dercol)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(1, 0)

Workbooks.Open Filename:="C:\Documents and Settings\rperez\Mes documents\essai\baseboulot2.xls"
With Workbooks("baseboulot.xls").Sheets("Feuil1")
.Range("A65536").End(xlUp).Offset(2, 0) = NomFic2
.Range("A65536").End(xlUp).Font.Bold = True
.Range("A65536").End(xlUp).Font.ColorIndex = 3
End With
derlig = Range("A1").SpecialCells(xlCellTypeLastCell).Row
dercol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
Workbooks("baseboulot2.xls").ActiveSheet.Range(Cells(2, 1), Cells(derlig, dercol)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(1, 0)

Workbooks.Open Filename:="C:\Documents and Settings\rperez\Mes documents\essai\baseboulot3.xls"
Dim numligne As Integer
With Workbooks("baseboulot.xls").Sheets("Feuil1")
numligne = .Range("A65536").End(xlUp).Offset(1, 0).Row
End With
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 1), Cells(derlig, 1)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A" & numligne)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 2), Cells(derlig, 2)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("B" & numligne)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 4), Cells(derlig, 4)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("C" & numligne)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 7), Cells(derlig, 7)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("D" & numligne)

End Sub
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
10 nov. 2009 à 14:37
C'est quoi ces nomfic, nomfic2 etc ... Tu devais les changer pour mettre les noms de tes fichiers......... Comme ceci :

Private Sub Workbook_Open()
Dim derlig As Integer, dercol As Integer
ActiveSheet.Range("A2:AZ65536").ClearContents

Workbooks.Open Filename:="C:\Documents and Settings\rperez\Mes documents\essai\baseboulot1.xls"
With Workbooks("baseboulot.xls").Sheets("Feuil1")
.Range("A65536").End(xlUp).Offset(2, 0) = "baseboulot1.xls"
.Range("A65536").End(xlUp).Font.Bold = True
.Range("A65536").End(xlUp).Font.ColorIndex = 3
End With
derlig = Range("A1").SpecialCells(xlCellTypeLastCell).Row
dercol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
Workbooks("baseboulot1.xls").ActiveSheet.Range(Cells(2, 1), Cells(derlig, dercol)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(1, 0)

Workbooks.Open Filename:="C:\Documents and Settings\rperez\Mes documents\essai\baseboulot2.xls"
With Workbooks("baseboulot.xls").Sheets("Feuil1")
.Range("A65536").End(xlUp).Offset(2, 0) = baseboulot2.xls"
.Range("A65536").End(xlUp).Font.Bold = True
.Range("A65536").End(xlUp).Font.ColorIndex = 3
End With
derlig = Range("A1").SpecialCells(xlCellTypeLastCell).Row
dercol = Range("A1").SpecialCells(xlCellTypeLastCell).Column
Workbooks("baseboulot2.xls").ActiveSheet.Range(Cells(2, 1), Cells(derlig, dercol)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A65536").End(xlUp).Offset(1, 0)

Workbooks.Open Filename:="C:\Documents and Settings\rperez\Mes documents\essai\baseboulot3.xls"
Dim numligne As Integer
With Workbooks("baseboulot.xls").Sheets("Feuil1")
numligne = .Range("A65536").End(xlUp).Offset(1, 0).Row
End With
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 1), Cells(derlig, 1)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("A" & numligne)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 2), Cells(derlig, 2)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("B" & numligne)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 4), Cells(derlig, 4)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("C" & numligne)
Workbooks("baseboulot3.xls").ActiveSheet.Range(Cells(2, 7), Cells(derlig, 7)).Copy Workbooks("baseboulot.xls").Sheets("Feuil1").Range("D" & numligne)

End Sub

Essaye déjà ça et reviens après
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
10 nov. 2009 à 15:07
Ben non, je viens de faire ce que tu m'as dit et regarde ce que ça me fait :
1 Date d'enregist Date courrier

baseboulot1.xls
1 27/10/2009 13/10/2009
3 27/10/2009 13/10/2009
5 27/10/2009 13/10/2009
6 27/10/2009 13/10/2009
7 29/10/2009 13/10/2009
9 30/10/2009 13/10/2009
12 30/10/2009 13/10/2009
13 31/10/2009 13/10/2009
15 31/10/2009 13/10/2009

baseboulot2.xls
2 19/10/2009 15/10/2009
4 17/10/2009 15/10/2009
5 19/10/2009 15/10/2009
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745 > itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
10 nov. 2009 à 15:14
Ben c'est bien non? Que faut-il de plus?
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
10 nov. 2009 à 15:34
Ben sur ce que je t'ai envoyé on se rend pas compte mais ca me mets dans le tableau "baseboulot1" "baseboulot2".

Mais c'est bon, j'ai remis Nomfic et ça remarche et j'ai même trouver la solution au problème de la cellule A1 qui se prenait un chiffre au lieu de mon entête de colonne.
J'ai inversé les deux dernières lignes et ça à l'air de marché :

avant:
Workbooks.Open Filename:="C:\Documents and Settings\rperez\Mes documents\essai\baseboulot3.xls"
Dim numligne As Integer
With Workbooks("baseboulot.xls").Sheets("Feuil1")

après:
Workbooks.Open Filename:="C:\Documents and Settings\rperez\Mes documents\essai\baseboulot3.xls"
With Workbooks("baseboulot.xls").Sheets("Feuil1")
Dim numligne As Integer

Tu penses que c'était bien ça ?
0
itreal Messages postés 30 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 16 novembre 2009
10 nov. 2009 à 16:30
J'en ai marre, j'ai un nouveau problème.
Il ne prend pas toutes les lignes de mon "baseboulot3"
0