VBA et EXCEL

Résolu/Fermé
nesskh Messages postés 8 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 4 septembre 2013 - 13 févr. 2013 à 11:51
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 15 févr. 2013 à 08:41
Bonjour,
voila mon responsable ma demandé de faire un travail le plutot possible j'ai besoin de votre aides SVP:
j'ai 11 mois, et 30 jours chaque mois, je veux prendre des informations de chaque feuille excel(numéro, identifiant, pannes, et description) que je met dans une autre feuille.
et cela pour les 30 feuilles de chaque mois et 11 mois(donc 30*11), j'ai touver des macros pour la concaténation, j'ai pas bien compris :(
le soucis c'est que le nombre de pannes est différents d'un jour à un autre comment pourrai-je faire?????? j'attends avce impatience vos réponse merci :)



A voir également:

8 réponses

via55 Messages postés 14474 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 19 septembre 2024 2 728
13 févr. 2013 à 14:04
Bonjour,

Une piste :

Le code suivant

lg= ActiveSheet.Cells.Find("*", [A1], , , , xlPrevious).Row

te donnes le n° de la dernière ligne non vide de la colonne A de la feuille active
En l'appliquant sur une feuille de données tu peux avec une boucle for n=3 to lg par exemple copier les données de la ligne 3 à la ligne lg de ta feuille

La même formule appliquée à ta feuille de résultat te permets également de trouver la derniere ligne occupée et donc de coller les resultats à partir de b=lg+1 en dessous des précédents

Cdlmnt
0
nesskh Messages postés 8 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 4 septembre 2013
Modifié par nesskh le 14/02/2013 à 09:39
pour bien expliquer mon probleme, j'ai 11 fichiers excel avec 30 feuilles dans chacun d'eux:

1- je veux extraire certaines informations de chaque feuille (panne, numéro, id)
cepandant c'est feuilles ont la meme structure mais avec des contenus qui différent gnre dans une feuille on trouve 2 pannes et dans une autres 6.

2-mettre c'est infos de toutes les feuilles et de tout les dossier sur une seule feuille

je suis débutante en VBA et j'ai vraiment besoin d'aide, merci beaucoup.
0
via55 Messages postés 14474 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 19 septembre 2024 2 728
14 févr. 2013 à 12:07
Peutx tu poster un exemple de ton fichier allégé et anonymé en indiquant les informations à récupérer et sous quelle forme tu veux qu'elles soient présentées sur la feuille récapitulative ?
Tu dis avoir 11 classeurs : ont ils la même structure de nom ?

Pour joindre un fichier tu passes par cjoint.com puis tu indiques le lien dans ton prochain message
0
nesskh Messages postés 8 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 4 septembre 2013
14 févr. 2013 à 12:24
voila un exemple d'une feuille parmis les 30 de chaque chaque classeur
https://www.cjoint.com/?CBomxFro7Oc
il me faut le numéro de la colonne A et B mais que les pannes de la colonne G dans cette exemple y'en 2 et pas les autres et c'st comme ça pour toutes ls autres feuilles sauf que pannes peut changer de place elle peut etre dans la premiere, derniere ligne,...
0

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

Posez votre question
via55 Messages postés 14474 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 19 septembre 2024 2 728
14 févr. 2013 à 13:36
Si je comprends bien la feuille recap ne doit avoir que 3 colonnes reprenant les N°s de A et B et le nombre de G si panne et tout cela à lasuite , c a dire que si feuille 1 a 2 pannes elles seront retrouveront ligne 1 et 2 du recap et si feuille 2 a 3 pannes elles se retrouveront lignes 3, 4 et 5 ?
Me confirmer si c'est bien cela
Je dois m'absenter mais je me penche sur le probleme ce soir
Toutes les feuilles sont elles nommées de la meme maniere? par ex avec le nom du jour ou c'est seulmeent feuil 1, 2 etc?
ET les classeurs de mois comment sont ils nommés
Il faut le savoir car il va falloir passer par un codage en VBA
0
nesskh Messages postés 8 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 4 septembre 2013
14 févr. 2013 à 13:57
merci via55 pour ta réponse voila ce que je veux avoir:
1- si dans ma feuille excle y'a pannes de cette ligne (qui contient pann) je prend quelqu colonnes pas toute genre la colonne A, B, E, G (il faut que j'extrait les pannes de ces feuilles)
2-je fait ça avec toutes les feuilles du fichier(en faite une feuille qui contient des pannes c'est une journée, et le fichier qui contient 30 sont les 30 jours du mois et les 11 fichiers sont 11 mois de l'année)
3-voila un exemple des noms des feuilles excel
RJ 472012-12-01 - Version 201525(pour le premier)
RJ 472012-12-02 - Version 202838 (pour le deuxieme)
RJ 472012-12-03 - Version 202644(pour le t"ieme) ainsi de suite
4-exemple de nomes des fichiers
12 DEC2012-182(pour le premier)
2 DEC 2012-47(pour le 2ieme)
voila j'espere que je suis assez claire :)
0
via55 Messages postés 14474 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 19 septembre 2024 2 728
14 févr. 2013 à 23:21
Bonsoir

Comme les noms de classeurs pour les mois n'ont pas apparement une denomination logique et suivie il est difficile de faire une automatisation globale
Par contre on peut faire une automatisation pour les 30 pages du classeur

Dans la fauille 1 du classeur Résultat mettre le code suivant

Sub copiepannes()


nom1 = InputBox("Quel est le nom du classeur à copier ?")
nom2 = ActiveWorkbook.Name
For p = 1 To 30 'va verifier les 30 premieres feuilles du classeur à copier
For n = 2 To 201 'verifie 200 lignes à modifier s'il en a plus

If Workbooks(nom1).Worksheets(p).Cells(n, 5).Value = "Pannes" Then 'verifie la présence de Pannes en colonne E

Workbooks(nom2).Worksheets(1).Cells(1, 1).Select 'Selectionne la 1ere feuille du classeur resultat
If IsEmpty(Workbooks(nom2).Worksheets(1).Cells(2, 1)) Then g = 2 Else F = Selection.End(xlDown).Row: g = F + 1 'se postionne 1ere ligne vide du classeur Résultat

Workbooks(nom2).Worksheets(1).Cells(g, 1).Value = Workbooks(nom1).Worksheets(p).Cells(n, 1).Value 'copie colonne A feuille copie en colonne A feuille resultat
Workbooks(nom2).Worksheets(1).Cells(g, 2).Value = Workbooks(nom1).Worksheets(p).Cells(n, 2).Value 'copie colonne B en colonne B
Workbooks(nom2).Worksheets(1).Cells(g, 3).Value = Workbooks(nom1).Worksheets(p).Cells(n, 6).Value 'copie colonne F en colonne C
Workbooks(nom2).Worksheets(1).Cells(g, 4).Value = Workbooks(nom1).Worksheets(p).Cells(n, 7).Value 'copie colonne G en colonne D

End If
Next n
Next p


End Sub

Ouvrir le 1er classeur mensuel
Revenir sur le Classeur Résultat et lancer la macro
Indiquer le nom du classeur mensuel quand il est demandé
Les infos des colonnes A, B, F et G concernant les pannes seront recopiées dans la feuille 1 du classeur Résultat

Ouvrir le 2eme classeur mensuel et relancer la macro, les infos seront recopiées à la suite des autres
etc

A adapter selon tes besoins

cdlmnt
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
15 févr. 2013 à 08:41
Bonjour bonjour,

Ou une solution supplémentaire, placer au préalable tous vos classeurs excel (et rien que ceux la) dans un même répertorie, et boucler sur tous les fichiers excel de ce répertoire :
Sources

    Dim Chemin As String, Fichier As String
    
    'Définit le répertoire contenant les fichiers
    Chemin = "C:\dossier\"
    
    'Boucle sur tous les fichiers xls du répertoire.
    Fichier = Dir(Chemin & "*.xls")
    'Utilisez la syntaxe suivante pour boucler sur tous les types de fichiers:
    'Fichier = Dir(Chemin & "*.*")
    
    Do While Len(Fichier) > 0
        'écrit le résultat dans la fenêtre d'exécution (Ctrl+G).
        Debug.Print Chemin & Fichier
        Fichier = Dir()
    Loop
0