Création
d'entreprise
Posez votre question Signaler

Répétér une macro sur d'autres fichiers [Résolu]

Nathalie - Dernière réponse le 21 sept. 2011 à 11:14
Bonjour,
Je me suis dit que ca serait une superbe idée de faire une macro pour collecter des données, mais punaise, c'est dur! :-P
J'ai un dossier dans lequel je vais stocker "n" fichiers (environ 50) de format identique mais avec des données différentes.
J'ai créé une macro qui permet de récupérer dans le fichier 1 du dossier les données des cellules C7 à O7 et de les insérer dans un autre fichier Z à la ligne 4.
Etant donné que j'ai déja beaucoup de fichier et que d'autres vont s'ajouter dans le temps, je voudrais écrire un code qui dirait: " faire la même opération sur tous les autres fichier du dossier et les insérer en dessous des données déja collées ligne 4"... mais ca je ne sais pas le faire
Mais si je savais la fairer alors lorsque j'activerais la macro je pourrais récupérer toutes les données automatiquement et surtout si je devais ajouter ou supprimer des fichiers ils seraient pris en compte.
Est ce que quelqu'un aurait une idée s'il vous plait?
Merci beaucoup par avance,
Nathalie
Lire la suite 

Répétér une macro sur d'autres fichiers »

17 réponses
Réponse
+0
moins plus
bonjour,
Une idée ?
Oui
ou plutôt une méthode! :o)

mais quelle version d'Excel?
et quel est le nom de la feuille des 50 fichiers ?
ou quel est le nom générique des 50 fichiers (par ex toto1 à toto50--> générique! toto) ?
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour Michel,
oui plutôt une méthode :-P
Alors j'ai la version Excel 2007 et concernant le nom des fichiers ca sera un nom générique, il s'appeleront tous Score + un chiffre/nombre donc ca fera : Score1, Score 2, Score 3...
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
rappel de ma demande:
Quel est le nom de la feuille dans les fichiers "scoreN..." ?
Nathalie - 18 sept. 2011 à 00:26
Hello Michel,
Merci pour les réponses si rapides et le gros coup de pouce :)
J'ai vu le document en PJ, par contre j'ai pas mon PC sur lequel j'ai fait la macro mais je le récupère bientot, j'ai hate de tester ca.
Le nom de la feuille c'est PPC2011
michel_m- 18 sept. 2011 à 07:22
bonjour
il faudra télécharger le pièce jointe puis ouvrir le zip et non l'ouvrir directement; pour le nom de feuille, c'est à changer dans les déclarations de constantes
Nathalie - 19 sept. 2011 à 09:56
Bonjour Michel,
Ouaouuu, incroyable ce code.
Je déchiffre tout ça ce matin en faisant les modifs sur les noms et je vous dirais dans la journée comment ca se passe.
Merci beaucoup en tout cas!
Bonne journée et à plus tard
Ajouter un commentaire
Réponse
+0
moins plus
Hello Michel,

Punaise vous êtes un génie, ca marche super bien!! Je suis trop contente!! C'est incroyable!
Je vais juste essayer de récupérer aussi le nom des fichiers (score 1, score 2) pour les mettre en début des lignes extraites parce que sinon j'ai plein de données mais je ne sais pas à quoi elles correspondent.
Je vais essayer de m'inspirer du code que vous m'avez fourni.

Merci beaucoup!!
Bien cordialement,
Nathalie
Ajouter un commentaire
Réponse
+0
moins plus
Tout fonctionne. J'ai réussi à rajouter les noms comme souhaité.

par contre dans le classeurs final qui collecte les données j'obtiens des données que j'aimerais voir apparaitre en %.
J'ai marqué un code mais il ne fonctionne pas:

Sub ApplyPercentageFormat()

'Pour la plage sélectionnée : appliquer le format pourcentage

For Each Requete In Range("C4:O100")
With Requete
If Right(.Value, 1) = "%" Then
Fichier = Left(.Value, Len(.Value) - 1)
If IsNumeric(myValue) Then
'Format pourcentage* avec deux décimales
.NumberFormat = "#,##0.00%"
.Value = myValue / 100
End If
End If
End With
End Sub

End Sub

Je l'ai mis dans la page compilation à la suite du code que vous m'avez créé.
Vous voyez ce qui cloche? je pense que c'est le For each REQUETE
Nathalie - 20 sept. 2011 à 16:47
mince, j'ai du envoyer avant de sauvegarder

http://cjoint.com/?0IuqULpPdg0

Voila le doc,
michel_m- 20 sept. 2011 à 17:04
comme tes nombres arrivent bien du style 0,953789 ( j'avais lu un point au lieu de la virgule ce qui compliquait tout) les modifs en gras ci dessous te rendent le nombre sous la forme 95,38%
et la mise au format se fait d'un seul coup

au départ du code
Sub compiler() 
Dim Fichier As String 
Dim Requete As Object 
Dim col As Byte, Lig As Byte, Dep As Byte 
'préparation 
Range("C3:O100").Clear 
Application.ScreenUpdating = False 
Dep = 4 ' mémorisation départ restitution 
Lig = Dep 'initialisation restitution 
col = 2

a la fin
  'restitution et complilation 
     Cells(Lig, col).CopyFromRecordset Requete 
     'ligne supprimée 
     Requete.Close 
     Source.Close 
     Set Source = Nothing 
     Set Requete = Nothing 
      
     Lig = Lig + 1 
     Fichier = Dir 
Wend 

' mise au format final: bordures et pourcentage 
With Range(Cells(Dep, col), Cells(Lig, Range(plage).Columns.Count + col - 1)) 
     .Borders.Weight = xlThin 
     .NumberFormat = "#,##0.00%" 
End With 

End Sub


tu peux supprimer ta macro ApplyPercentageFormat()
Nathalie - 21 sept. 2011 à 11:14
Parfait!!
Ca marche à merveille!!
Merci pour tout!
Ajouter un commentaire
Ce document intitulé « Répétér une macro sur d'autres fichiers » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?