Ouvrir fichier Excel, copier des valeurs et les coller

Bonjour a toutes et tous?

Comment allez vous?

Je suis depuis peu parti vivre au bresil pour un nouveau depart professionel . C est genial mais j avoue que je me galere un peu. L un de mes problemes vient du fait que je ne connais pas VBA et que je ne sais pas faire de macro.... c est problematique car je dois gerer plein de donnees (sans acces )

j aurais donc besoin de votre aide svp.

J essai de compotrendre depuis des heures comment ecrire une macro sous EXCel mais je n y arrive pas... je sais a peine ou se trouve le bouton de la macro.

Voici ce que je cherche a faire : j ai plein de fichier Excell qui sont tous construit de la meme facon, avec les memes onglets (A - B - C...) et les memes infos (voir piece jointe : "fichier1") Seul leur nom du fichier va changer ("fichier2" "fichier3"....).

Je souhaiterai avoir un fichier « Bilan» qui via une macro fasse les operations suivantes :

  • Ouvre un a un tous les fichiers EXCEL (dont la liste sera dans le fichier « Bilan» onglet « liste des projets»)
  • Se positionne sur l onglet « A» du premier fichier (ex : "fichier1")
  • Prend certaines valeurs dont j ai besoin, mais pas toutes (ex : B2 et D8 seulement les cases jaunes)
  • Les coller dans ce fichier « Bilan» onglet « Recap» a une place precise
  • Ferme le premier fichier
  • Puis refaitla meme avec tous les autres fichiers

Vous croyez que c est possible ?

Si vous pouviez m aider ca serait super sympa.

D'avance merci d avoir pris le temps de lire ce message.

Florian

57bilan.xlsx (9.67 Ko)
37fichier2.xlsx (9.57 Ko)
33fichier1.xlsx (9.75 Ko)
57bilan.xlsx (9.67 Ko)

Boa tarde Florian, bonsoir le forum,

É possível! Só si você dizer em que cidade do Brasil você está...

Je regarde ça et reviens dès que j'ai du concret...

Boa tarde Florian, bonsoir le forum,

Si les classeurs source (fichier1, fichier2) se trouvent dans le même dossier que le classeur Bilan.xlsm (car avec la macro il devient .xlsm), alors le code commenté ci-dessous devrait faire l'affaire :

Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim CH As String 'déclare la variable CH (Chemin d'accès)
Dim OD As Object 'déclare la variable OD (Onglet Destination)
Dim OL As Object 'déclare la variable OL (Onglet Liste de projets)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim CS As Object 'déclare la variable CS (Classeur Source)
Dim OS As Object 'déclare la variable OS (Onglet Source)
Dim DEST As Range 'déclare la variable DEST (cellul de DESTination)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set CD = ThisWorkbook 'définit le classeur destination CD
CH = CD.Path & "/" 'définit le chemin d'accès CH
Set OD = CD.Sheets("recap") 'définit l'onglet destination OD
Set OL = CD.Sheets("liste des projets") 'définit l'onglet liste OL
DL = OL.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet OL
Set PL = OL.Range("A2:A" & DL) 'définit la plage PL
For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL (sur tous les projets de la liste)
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
    Set CS = Workbooks(CEL.Value & ".xlsx") 'définit le classeur source CS (génére une erreur si ce classeur n'est pas ouvert)
    If Err <> 0 Then 'condition : si une erreur a été générée
        Err.Clear 'efface l'erreur
        Workbooks.Open (CH & CEL.Value & ".xlsx") 'ouvre le classeur correspondant à la valeur de la cellule CEL
        Set CS = ActiveWorkbook 'définit le classeur source CS
    End If 'fin de la condition
    On Error GoTo 0 'annule la gestion des erreurs
    Set OS = CS.Sheets("A") 'définit l'onglet source OS
    Set DEST = OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellue de destination DEST
    DEST.Value = CEL.Value 'récupère la valeur de la cellule CEL dans DEST
    DEST.Offset(0, 1).Value = OS.Range("B2").Value 'récupère la valeur de la cellule B2 dans DEST décalée d'une colonne à droite
    DEST.Offset(0, 2).Value = OS.Range("D8").Value 'récupère la valeur de la cellule D8 dans DEST décalée de deux colonnes à droite
    CS.Close SaveChanges:=False 'ferme le classeur source sans enregistrer
Next CEL 'prochaine cellule de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub

Oi tudo bom e você? Voce fala portugues... talves esta no brasil tambem? Morou a proimidade de Sao paulo em uma cidade que se nome JUNDIAI.

Muito obrigado para seu resposat vou tentar ler esso et a tarde vou envira uma resposta... mas muito obrigado ja para seu ajuda

Boa Tarde Florian, bonsoir le forum,

Morei na Paraíba, en João Pessoa, mas faz mais de 10 anos e, às vezes, bate uma tremenda saudade do povo brasileiro...

Bonjour,

Je cherche à faire plus ou moins la même chose que Flo, mais dans une autre manière.

Je reçois tous les jours un fichier .CSV dont seul le titre change (ADM_690000_Bernarderie_2016.12.26.csv) au niveau de la date (AAAA.MM.JJ) et je voudrais copier l'intégralité de ce fichier dans un autre fichier et répéter cette action sur l'ensemble de mes fichiers (ADM_690000_Bernarderie_AAAA.MM.JJ.csv), mais que chaque copier/coller se fasse l'un en dessous de l'autre.

Après, l'idée serait de copier le contenu sans ouvrir (et fermer) le fichier .CSV

Donc je ne dois pas être si doué que ça, car j'ai voulu reprendre le code indiqué plus haut, mais ça ne donne que des echecs

Merci de votre aide

Rechercher des sujets similaires à "ouvrir fichier copier valeurs coller"