Signaler

Remplir un tableau à partir d'un autre avec Macro [Résolu]

Posez votre question Sophie - Dernière réponse le 15 juin 2017 à 12:08 par ccm81
Bonjour,

Je possède une base de données avec différents sites (avec N° propre à chacun).

J'ai un onglet avec un premier tableau dans lequel sont répertoriées des consommations mensuelles par site, et donc ce tableau évolue au moins tous les mois.

A droite de ce tableau, j'ai établie une moyenne pour chaque mois (qui, comme vous l'aurez compris, évolue à chaque nouvelle entrée de données).

Dans un autre onglet se trouve un second tableau avec l'ensemble des sites. Ce tableau doit me servir à cataloguer les moyennes suscitées (et pouvoir le faire régulièrement, et d'écraser les anciennes données).

Mon but, serait d'avoir un bouton macro, qui me permettrait de copier les différentes moyennes dans le second tableau, à la bonne ligne,c'est-à-dire en utilisant comme référence le N° des différents sites.

Je me triture le cerveau mais les macros et moi on a jamais été très copains. Pensez-vous que c'est possible, et si oui, avez-vous une solution ?

Merci par avance

Mon fichier Excel :
www.transfernow.net/81h18214t25y
Afficher la suite 
Utile
+0
plus moins
Bonjour

Utilises http://cjoint.com/ pour envoyer ton fichier

Cdlmnt
Donnez votre avis
Utile
+0
plus moins
Merci, voilà le fichier :
http://www.cjoint.com/c/GFonihd0LJL
Donnez votre avis
Utile
+0
plus moins
Tu devrait pouvoir te passer de macro
En D5 (ligne Bibliothèque)
=INDEX('Outil seuils'!$G$7:$G$18;EQUIV(Seuil!D$1;'Outil seuils'!$B$7:$B$18;0))
à tirer vers la droite

Dans la feuille Outil seuils, il devrait y avoir un tableau pour chaque site, à moins que tu aies une feuille par site... La formule ci-dessus restera alors à adapter pour les autres sites

Si tu veux une macro, il faut envoyer un fichier avec la vraie structure complète

Cdlmnt
Donnez votre avis
Utile
+0
plus moins
J'ai omis un détail important : le tableau de 2 lignes et 3 colonnes en haut de mon premier onglet est en réalité constitué de listes déroulantes me permettant de choisir un site et une énergie, ce qui remplit ensuite le tableau en-dessous (je ne peux vous transmettre mon "vrai" fichier pour des raisons de confidentialité).

Ainsi, mon but est, pour chaque site et énergie, de pouvoir coller la colonne des moyennes dans le second tableau, afin de pouvoir répéter l'opération pour chacun des autres sites.
Donnez votre avis
Utile
+0
plus moins
OK, on va faire avec, mais il te faudra certainement mettre la main dans le cambouis pour la macro

Cdlmnt
Donnez votre avis
Utile
+0
plus moins
Si je peux avoir une base saine, pas de problème pour me creuser le cerveau avec mes données :)
Donnez votre avis
Utile
+0
plus moins
Une question ... pour le moment

Le numero en colonne A (feuille seuil) est il unique (1 site+1energie = 1 numero) ? Si oui, ça simplifie la recherche de la ligne qui se ferait selon ce (seul) numéro
Donnez votre avis
Utile
+0
plus moins
Oui tout à fait, il est unique (en fonction du site et de l'énergie choisie). C'est d'ailleurs ce numéro qui me permet de faire appel à mes consommations.
Donnez votre avis
Utile
+0
plus moins
OK, c'est parti
Donnez votre avis
Utile
+0
plus moins
Un début .. à tester
http://www.cjoint.com/c/GFooWMvO2s8

Cdlmnt
Donnez votre avis
Utile
+0
plus moins
Merci !!
Par contre, je pense que c'est à cause de ma version de Office (Office 365) mais aucune macro ne s'affiche dans le menu (alors qu'elle fonctionne parfaitement...)
Donnez votre avis
Utile
+0
plus moins
1. mais aucune macro ne s'affiche
dans ton fichier ?
et que veux tu dire par "ne s'affiche dans le menu"
2. alors qu'elle fonctionne parfaitement...
même question

Avec mon vieil excel 2003, je n'ai pas tous ces problèmes

N'oublies d'enregistrer ton fichier (avec la macro) avec le type .xlsm (et non .xlsx)

Si c'est fini, peux tu mettre le sujet à résolu (en dessous du titre de ton premier message)

Bonne fin de journée
Donnez votre avis
Utile
+0
plus moins
Merci pour tes précisions.

J'avais bien déjà fait toutes tes suggestions, et quand je vais dans "Affichage" puis "Macros"/"Afficher les macros" je n'ai rien du tout, zéro.
Et pourtant quand je clique sur le bouton que tu as créé, la macro fonctionne parfaitement.
Je penche pour une incompatibilité de version Office.

Te serait-il possible de coller les lignes de la Macro sur ce forum ?

Merci par avance !
Donnez votre avis
Utile
+0
plus moins
1. La macro attachée au bouton que j'ai nommé btMAJ (dans le module de la feuille Outil seuils)
Private Sub btMAJ_Click()
Dim numero As Long
With ActiveSheet
  numero = .Range(ceNuFO).Value
  Call Transfert(numero)
End With
End Sub

2. La macro transfert (dans le module général Module 1)
' constantes décrivant la configuration des données

' Feuille Outil seuils
Public Const FO As String = "Outil seuils"
Public Const ceNuFO As String = "D3"
Public Const liDeFO As Byte = 7
Public Const coSeFO As String = "G"
' Feuille seuil
Public Const FS As String = "Seuil"
Public Const coNuFS As String = "A"
Public Const codeFS As Byte = 4

Public Sub Transfert(numero As Long)
Dim mois As Byte, li As Long
Dim obj As Object
With Sheets(FS)
  Set obj = .Columns(coNuFS).Find(numero, , , xlWhole)
  If obj Is Nothing Then MsgBox "Numero " & numero & " non trouvé ": Exit Sub
  li = obj.Row
  For mois = 1 To 12
    .Cells(li, codeFS + mois - 1).Value = Sheets(FO).Range(coSeFO & liDeFO + mois - 1).Value
  Next mois
End With
End Sub

Cdlmnt
Donnez votre avis
Utile
+0
plus moins
Après quelques modifications, ça fonctionne.

Merci beaucoup !
Donnez votre avis
Utile
+0
plus moins
De rien

Si c'est fini, peux tu mettre le sujet à résolu (en dessous du titre de ton premier message)

Bonne journée
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !