Aide vba macro excel

Fermé
wow40 - 21 févr. 2010 à 20:36
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 - 27 févr. 2010 à 15:04
Bonjour,

Je souhaite créer une macro excel pour faire un suivi des machines à mon travail.
J'ai 40 machines donc 40 feuilles excel.
Je souhaiterais créer une feuille supplémentaire me permettant de créer une vue globale.
Sur cette feuille vue globale, dans un tableau, je voudrais reporter la dernière ligne de la colonne(rempli chaque jour manuellement par divers opérateurs) des 40 autres feuilles.J'espère que j'ai été clair.
Je débute dans les macros donc si quelqu'un pouvait m'aider.Ce serait sympa.
Voilà ce que j'ai concocté en flanant sur internet mais ça n'a pas l'air de marcher.

Sheets("A1").Select
Range("E100").End(xlUp).Select
Selection.Copy

Sheets("Salle 1").Select
Range("B1").Select
Selection.Paste

Merci de votre aide
A voir également:

6 réponses

Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
21 févr. 2010 à 22:34
Bonsoir,

Je pense que ton premier soucis est :
Sheets("A1").Select

à remplacer par (par exemple) :
Sheets("Feuil1").Select


Sinon, pour t'aider, tu veux reporter la dernière ligne des colonnes (je suppose la colonne E) mais à quel endroit veux tu les reporter ? A priori, tu commences en B1 mais après, B2, B3, ... ou C1, D1, ...
0
Bonjour Gord21,

En fait j'ai 40 feuilles du nom des machines,A1àA10 B1àB10 C1àC10 D1àD10
Tu crois que cela fait une interaction avec le nom des cellules?
Je voudrais les reporter de B1à B20 et de D1àD20
Voilà si tu as un idée?
J'essairais ce soir de changer le nom de la feuille A1 par autre chose pour voir.
Merci
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
22 févr. 2010 à 12:36
Bonjour,
Non, inutile de modifier le nom de tes onglets, ça m'a parut suspect sur le coup car d'habitude A1 est la référence d'une cellule.
Juste pour confirmation, tu veux copier la dernière cellule de la colonne E des onglets A1 à B10 dans les cellules B1 à B20 et la dernière cellule de la colonne E des onglets C1 à D10 dans les cellules D1 à D20. C'est bien ça ?
0
Re,
Oui c'est tout à fait ça.
J'ai changé le nom de la première feuille, la macro se lance mais elle s'arrête sur Selection.Paste et me dit que cette action est impossible.
erreur 438 Propriété ou méthode non géré.
Voilà si tu as une idée
0
J'ai mis pastespecial à la place de paste cela marche mais il faut que j'exécute à chaque fois la macro si je rajoute une ligne.Est_ce qu'une macro ne peut pas rester active sans avoir besoin la redémarrer?
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
25 févr. 2010 à 19:58
Bonsoir,
Excuse-moi, je n'ai pas été très réactif pour la réponse. Tu veux dire que tu es obligé de relancer la macro si tu ajoute une donné dans une des colonnes E ? Si c'est ça, tu peux utiliser l'évênement Change de ton classeur.
J'attend ta confirmation pour t'envoyer le code.

@+
0

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

Posez votre question
Salut Gord21,

en effet je veux bien que tu m'envoies le code si tu peux merci.
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
27 févr. 2010 à 15:04
Bonjour,
Voici le code, il te suffit de le coller dans la feuille de code de ThisWorkbook de ton classeur.
Remarques :
- Dans ce code, l'onglet récapitulatif s'appelle Rapport
- Tu ne pourras pas avoir plus de 100 valeurs dans tes colonnes E (j'ai repris ton E100 car je pense que tu l'a mis volontairement)

Si tu as des questions, n'hésite pas.

Option Explicit

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'
' Déclaration des variables
'==========================
Dim Liste_onglets_1()         ' Liste des onglets qui contiennent les valeurs sources 1
Dim Liste_onglets_2()         ' Liste des onglets qui contiennent les valeurs sources 2
Dim Cell_debut_1 As Range     ' Première cellule où seront copiées les valeurs de la source 1
Dim Cell_debut_2 As Range     ' Première cellule où seront copiées les valeurs de la source 2
Dim i As Long                 ' Variable utilisée pour les boucles
'
' Initialisation de la liste d'onglets
'=====================================
Liste_onglets_1 = Array("A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", _
                     "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10")
Liste_onglets_2 = Array("C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", _
                     "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10")
Set Cell_debut_1 = ThisWorkbook.Worksheets("Rapport").Range("B1")
Set Cell_debut_2 = ThisWorkbook.Worksheets("Rapport").Range("D1")
'
' Mise à jour des valeurs
'========================
'
On Error Resume Next
'
' Parcours des onglets définis dans la liste 1
'---------------------------------------------
For i = 0 To UBound(Liste_onglets_1)
   Cell_debut_1.Offset(i, 0).Value = ThisWorkbook.Worksheets(Liste_onglets_1(i)).Range("E100").End(xlUp)
Next i
'
' Parcours des onglets définis dans la liste 2
'---------------------------------------------
For i = 0 To UBound(Liste_onglets_2)
   Cell_debut_2.Offset(i, 0).Value = ThisWorkbook.Worksheets(Liste_onglets_2(i)).Range("E100").End(xlUp)
Next i
On Error GoTo 0
'
End Sub
0