Macro pour ouvrir un document et en extraire les données

Dynomax

XLDnaute Nouveau
Bonjour,

Nouvellement inscrit sur le forum et nouveau utilisateur des macros sous excel et je rencontre un léger problème.

Le voici :

Je dois ouvrir deux fichier excel, l'un a le même titre, l'autre change toute les semaines.
Je dois faire un copier coller des valeurs du second fichier et les incrémenter dans le premier.
Jusque la, je m'en suis sorti.

Le hic, c'est que le second fichier lui change obligatoirement de nom chaque semaine et je ne sais pas comment m'en sortir avec ma macro.

Ma macro se décompose en 2 phase : la première je vais aller sélectionner mon fichier et en seconde phase, je vais faire un copier-coller et étendre des cellules.

Mais vous aller mieux comprendre en la voyant :

Sub MAJ_Donnee()
'
'Ne pas voir les modifications réalisées
Application.ScreenUpdating = False


'Ouvrir un fichier
Classeur = Application.GetOpenFilename("Classeurs Excel,*.xls")
If Classeur = False Then Exit Sub
Workbooks.Open Filename:=Classeur

'MAJ données débits Sud
Range("A4").Select
Selection.End(xlDown).Select
Range("A4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Débit test 1.xlsm").Activate
Range("A1").Select
Selection.End(xlDown).Select
Cells(ActiveCell.Row + 1, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Windows("06-03-2015 au 13-03-2015.xls").Activate
Range("C4").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("Débit test 1.xlsm").Activate
Range("E18723").Select
ActiveSheet.Paste
Range("B18722").Select
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("B18722:B65534")
Range("B18722:B65534").Select
Range("C18722").Select
Selection.AutoFill Destination:=Range("C18722:C65534")
Range("C18722:C65534").Select
Range("D18722").Select
Selection.AutoFill Destination:=Range("D18722:D65534")
Range("D18722:D65534").Select

Application.ScreenUpdating = True

End Sub

NB : le fichier qui ne change pas de nom se nomme "Débit test 1" et celui qui change de nom toute les semaines et en gras dans la macro.

j'espère que vous pouvez m'aider avec mon léger soucis.

Merci d'avance pour vos réponse.
 

Dynomax

XLDnaute Nouveau
Re : Macro pour ouvrir un document et en extraire les données

Bonjour Eric S

D'abord merci de m'avoir répondu

je comprend les modifications, cependant je ne comprend pas où les mettre (quand je dis que je commence dans les macro ;) )
 

ERIC S

XLDnaute Barbatruc
Re : Macro pour ouvrir un document et en extraire les données

re

'Ouvrir un fichier
Classeur = Application.GetOpenFilename("Classeurs Excel,*.xls")
If Classeur = False Then Exit Sub
Workbooks.Open Filename:=Classeur
mesdonnees = activeworkbook.name & ".xls"
'MAJ données débits Sud

...

SkipBlanks:=False, Transpose:=False
Windows(mesdonnees).Activate
Range("C4").Select
 

ERIC S

XLDnaute Barbatruc
Re : Macro pour ouvrir un document et en extraire les données

Re

je ne connais pas ton projet mais tu as intérêt à simplifier le code :

Code:
[Sub MAJ_Donnee()
 '
 'Ne pas voir les modifications réalisées
 Application.ScreenUpdating = False
 monclasseur = ActiveWorkbook.Name
'déterminer dernière ligne utilisée sur fichier "Débit test 1.xlsm"
derligne = Range("A" & Rows.Count).End(xlUp).Row
 'Ouvrir un fichier
 Classeur = Application.GetOpenFilename("Classeurs Excel,*.xls")
 If Classeur = False Then Exit Sub
 Workbooks.Open Filename:=Classeur
mesdonnees = ActiveWorkbook.Name
 'MAJ données débits Sud
 Range("A4").Select
 Range(Selection, Selection.End(xlDown)).Copy
 Windows(monclasseur).Activate
 Range("A" & derligne + 1).Select
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 Application.CutCopyMode = False
' Windows("06-03-2015 au 13-03-2015.xls").Activate
 Windows(mesdonnees).Activate
 Range("C4").Select
 Range(Selection, Selection.End(xlDown)).Copy
 Windows(monclasseur).Activate/CODE]

pour la fin de ton code je ne sais pas ce que tu fais exactement
 

Dynomax

XLDnaute Nouveau
Re : Macro pour ouvrir un document et en extraire les données

Alors pour qu'il soit aussi long, c'est parce que je l'ai pas écrit directement mais j'ai utilisé la méthode "enregistrer une macro" qui, pour le moment, la seul que je connais mais elle est vite limité.

Ensuite le pourquoi du projet :
J'ai un tableau avec les débits (celui qui ne change pas) qui est mis à jour par un tableau avec des valeurs de débits, avec une valeur par minute, que j'extrait chaque semaine via un logiciel et je ne peux le faire qu'une fois par semaine.
Donc je dois prendre les nouvelles valeurs de débits avec la date et l'heure qui correspond et la copier dans le tableau qui me sert de base pour un tableau croisé dynamique.

La seul chose qui me manque à se code, mais je pense savoir comment faire (tjrs via la méthode que j'utilise pour faire une macro), c'est de convertir les valeurs que j'extrait (soit dans le code la colonne C du fichier "06-03-2015 au 13-03-2015.xls") qui est par défaut en format texte en format numérique (en gros, c'est que le chiffre est marque de la sorte XXX.XX et je dois transformer le point en virgule).

Voilà, j'espère avoir été clair ;)
 

Discussions similaires

Réponses
3
Affichages
569

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth