Ouverture d'un fichier excel pour transférer dans un autre

Hadidman

XLDnaute Nouveau
Bonjour à tous !
Aujourd'hui je demande votre aide.
Je pousse plutôt un grand appel au secours ! En effet, cela fait 2 jours maintenant que je me prends la tête avec ce problème...

En fait, j'ai plusieurs fichiers Excel qui contiennent des données entrées par mes collaborateurs au cours de chaque mois :
Avec le nom du collaborateur en cellule B2 (dans l'exemple : Anthony)
Ce lien n'existe plus

Ces données là (pour chaque collaborateur), je veux les ajouter dans une autre feuille Excel à la mise en page totalement différente :
Ce lien n'existe plus
PS : Les données contenu dans la nuit et la demi-nuit ne sont pas ajoutés pour l'instant à ma feuille qui regroupe tout, parce qu'il faut que je fasse une condition pour savoir si quelque chose à été rentré dans ses cases... (ce sera mon étape suivante donc n'y prêtez pas attention)

J'ai réussit à faire cela, bon c'est sur et certain que ma programmation est horriblement nulle (vous le verrez avec le fichier joint... :( )

Mon problème, est que j'aimerais pouvoir ajouter les données les unes à la suite des autres au fur et à mesure que je fusionne les feuilles Excel.

Seulement, pour ouvrir une ajouter une feuille, j'ai des boutons en face du nom de chaque collaborateur pour ouvrir leur fichiers, et je ne sais pas comment garder en mémoire la dernière valeur du tableau pour pouvoir ajouter à la suite...

Si vous pouviez regarder un petit peu ou me donner une idée ce serait extrêmement sympa, et surtout me dire comment je pourrais faire autrement pour programmer la récupération des données (qui est très très lente puisqu'il faut ouvrir le fichier source, copier la valeur, aller dans le nouveau fichier, coller la valeur, et ainsi dessuite, tout ça 300 fois... ca fait mal...)

Fichier joints : (les 3 feuilles excel) :
La feuille rassemblant toutes les données : Classeur1.xls
La feuille collaborateur 1 : Anthony.xls
La feuille collaborateur 2 : Ber.xls

Je vous remercie énormément !
 

skoobi

XLDnaute Barbatruc
Re : Ouverture d'un fichier excel pour transférer dans un autre

Bonjour et bienvenue sur XLD,

je te propose une autre macro pour "Anthony" qu'il faudra reproduire pour les autres personnes:

Code:
Sub anthony()
Dim Wb_anthony As Workbook
Dim Ws_anthony As Worksheet
Dim lig As Integer, derlig As Integer

Application.ScreenUpdating = False
Set Wb_anthony = Workbooks.Open(Filename:= _
"C:\Users\Yohan\Desktop\facturation\collaborateurs\Anthony.xls")
Set Ws_anthony = Wb_anthony.Sheets("JAN")
For lig = 9 To 219 Step 7 'de la ligne 9 à 219 toutes les 7 lignes
    ThisWorkbook.Activate 'active le fichier PVZ....
    derlig = Range("A65536").End(xlUp).Row 'identifie la dernière ligne
    'Matinée:
    Range("A" & derlig + 1).Value = Ws_anthony.Range("B2").Value 'complète technicien
    Range("B" & derlig + 1).Value = Ws_anthony.Range("B" & lig).Value 'complète agence
    Range("D" & derlig + 1).Value = Ws_anthony.Range("B" & lig + 1).Value 'complète chantier
    Range("E" & derlig + 1).Value = Ws_anthony.Range("B" & lig - 2).Value 'complète date
    Range("G" & derlig + 1).Value = Ws_anthony.Range("B" & lig + 2).Value 'complète essai(s)
    'Aprè-midi:
    Range("A" & derlig + 2).Value = Ws_anthony.Range("B2").Value 'complète technicien
    Range("B" & derlig + 2).Value = Ws_anthony.Range("C" & lig).Value 'complète agence
    Range("D" & derlig + 2).Value = Ws_anthony.Range("C" & lig + 1).Value 'complète chantier
    Range("E" & derlig + 2).Value = Ws_anthony.Range("B" & lig - 2).Value 'complète date
    Range("G" & derlig + 2).Value = Ws_anthony.Range("C" & lig + 2).Value 'complète essai(s)
Next
Application.ScreenUpdating = True

End Sub
 

Hadidman

XLDnaute Nouveau
Re : Ouverture d'un fichier excel pour transférer dans un autre

MAIS LooooL !!
C'est énorme, j'ai du écrire (fin copier coller en adaptant) 3-4 pages de codes pour arriver à mon résultat et toi en 3 lignes tu me le fait et en plus ça garde pas la mise en forme (que je voulais supprimer), je te remercie ÉNORMÉMENT !!
 

Hadidman

XLDnaute Nouveau
Re : Ouverture d'un fichier excel pour transférer dans un autre

Salut skoobi, je demande à nouveau ton aide si tu l'acceptes :)

J'ai juste 2 petits trucs que j'arrive pas à faire avec le code que tu m'as fait :
Je voudrais que
- si le matin y a PAQ dans la case chantier,
- si l'aprem y a quelque chose dans la case chantier
- et qu'on est dans la même agence le matin et l'aprem​
Et bien on affiche une quantité 0 pour le matin PAQ (ainsi qu'un PU de 0)
une quantité 20 pour l'aprem et le chantier x (ainsi qu'un PU de 800)

Et idem dans l'autre sens (chantier x le matin, PAQ l'aprem)
J'ai donc effectué le code suivant dans la boucle que tu m'as faite (qui ne fonctionne pas bien sur...) :
Code:
    If Range("D" & derlig + 1).Value = "PAQ" Then                                   'Si PAQ est dans Chantier
    Range("J" & derlig + 1).Value = 0                                               'On mets 0 dans la quantité
        If Range("E" & derlig + 1).Value = Range("E" & derlig + 2).Value Then       'Si la date matin = date aprem
            If Range("C" & derlig + 1).Value = Range("C" & derlig + 2).Value Then   'Si agence matin = agence aprem
                Range("I" & derlig + 2).Value = 800                                 'On mets 800 dans le PU
                Range("J" & derlig + 2).Value = 20                                  'On mets 20 dans la quantité
            End If
        End If
    End If
Voilà, je comprends pas ce qui ne vas pas...




Et ensuite 2ème et dernier problème, j'aimerais que lorsque dans la case chantier quelqu'un écrive PAQ (avec quelque chose derrière), exemple : PAQ pipi, et bien ca prenne en compte qu'il y a PAQ et ça mette une quantité 0.
J'ai donc pensé à utiliser une fonction recherche pour voir le début de la phrase et ainsi pouvoir avec une condition mettre la valeur 0, est-ce la bonne démarche ?

Merci de votre aide, je joint mes fichiers qui seront utiles pour tester et voir le problème, il faut que tu penses à changer ça dans le code vba de la feuille test.xls :
Code:
Set Wb_nomm = Workbooks.Open(Filename:= _
"C:\Users\Yohan\Desktop\facturation\collaborateurs\" & nom & ".xls")
et à choisir le mois de Février (FEV) et le technicien COLASANTE

Ce lien n'existe plus

Merci à toi :p et bonne chance !!
 

skoobi

XLDnaute Barbatruc
Re : Ouverture d'un fichier excel pour transférer dans un autre

Re bonjour,

je n'arrive pas à ouvrir les fichiers, "fin de l'archive non attendu".
Pourrais-tu l'envoyer à nouveau?
Ce n'est pas la première fois.
Si ça continu, je crois que je vais changer de compresseur "à air" :p:D.
 

Staple1600

XLDnaute Barbatruc
Re : Ouverture d'un fichier excel pour transférer dans un autre

Bonsoir à tous



Skoobi: avec mon freeware no problemo :D

Si Hadidman est d'accord je peux le poster sur le forum.

(zip > 48,8 ko --> 68 Ko fait l'archive zip)

Hadidman: tu devrais préciser que tu as posté (enfin je suppose) la question également sur le forum ou sont stockés les fichiers de ton premier message .
 
Dernière édition:

Hadidman

XLDnaute Nouveau
Re : Ouverture d'un fichier excel pour transférer dans un autre

Bonsoir à vous !!
Merci de vos réponses ça fait plaisir !

Si Hadidman est d'accord je peux le poster sur le forum.

Pas compris lol, d'accord pour quoi ?

Hadidman: tu devrais préciser que tu as posé (enfin je suppose) la question également sur le forum ou sont stockés les fichiers de ton premier message .

Toujours pas compris :'(
Mon problème est exactement dans le même sujet donc je voit pas ce qu'il y a à préciser, désolé c'est la fin de la journée, je suis fatigué :D
Merci à toi en tout cas Staple :p
 

skoobi

XLDnaute Barbatruc
Re : Ouverture d'un fichier excel pour transférer dans un autre

Re,

comme ça, ça devrait aller mieux (petite erreur dans la colonne pour l'agence ;)):

Code:
    If Left(Range("D" & derlig + 1).Value, 3) = "PAQ" Then                                  'Si PAQ est dans Chantier
    Range("J" & derlig + 1).Value = 0                                               'On mets 0 dans la quantité
        
'Si la date matin = date aprem et agence matin = agence aprem
        If Range("E" & derlig + 1).Value = Range("E" & derlig + 2).Value And _
        Range("B" & derlig + 1).Value = Range("B" & derlig + 2).Value Then
            Range("I" & derlig + 2).Value = 800                                 'On mets 800 dans le PU
            Range("J" & derlig + 2).Value = 20                                  'On mets 20 dans la quantité
        End If
    End If
Le 2eme problème est résolu avec la fonction "Left".

Voilà :).
 

Hadidman

XLDnaute Nouveau
Re : Ouverture d'un fichier excel pour transférer dans un autre

Lol en gros j'avais pris la colonne C au lieu de la B.... super...

Mais je viens de tester et ça ne marche pas :'( Rien ne se passe...
Quand je remplace :
Range("I" & derlig + 2).Value = 800 'On mets 800 dans le PU
Range("J" & derlig + 2).Value = 20 'On mets 20 dans la quantité

par
Range("M1").Value = 800
ca s'affiche bien dans la case M1 mais rien dans les I ou J...
 
Dernière édition:

Hadidman

XLDnaute Nouveau
Re : Ouverture d'un fichier excel pour transférer dans un autre

Euh oui biensur tu peux reposter le fichier ici, seulement je comprends toujours pas puisque c'est dans mon tout premier message et j'ai repris un "nouveau sujet" en disant :
Code:
J'ai juste 2 petits trucs que j'arrive pas à faire avec le code que tu m'as fait :

Donc c'est que mon "nouveau sujet" reprenait le premier !

Enfin bref, tant que tout le monde s'y retrouve c'est l'essentiel :p
Bonne nuit à vous et à demain :p
 

Hadidman

XLDnaute Nouveau
Re : Ouverture d'un fichier excel pour transférer dans un autre

lol ok j'ai compris maintenant :)
Seulement je n'ai pas posé cette question sur le forum excel-pratique, je me suis juste servi de leur upload de fichier car j'ai un serveur proxy qui m'empêche d'utiliser un ftp...

Merci de t'être donné la peine de m'expliquer :p
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 023
Messages
2 084 713
Membres
102 637
dernier inscrit
TOTO33000