Remplir un tableau à partir d'un autre avec Macro

Résolu/Fermé
Sophie - 14 juin 2017 à 11:42
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 - 15 juin 2017 à 12:08
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

16 réponses

ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
Modifié le 14 juin 2017 à 15:02
Bonjour

Utilises https://www.cjoint.com/ pour envoyer ton fichier

Cdlmnt
0
Merci, voilà le fichier :
http://www.cjoint.com/c/GFonihd0LJL
0
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
14 juin 2017 à 15:23
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
0
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.
0

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

Posez votre question
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
14 juin 2017 à 16:01
OK, on va faire avec, mais il te faudra certainement mettre la main dans le cambouis pour la macro

Cdlmnt
0
Si je peux avoir une base saine, pas de problème pour me creuser le cerveau avec mes données :)
0
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
Modifié le 14 juin 2017 à 16:26
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
0
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.
0
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
14 juin 2017 à 16:41
OK, c'est parti
0
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
14 juin 2017 à 16:49
Un début .. à tester
http://www.cjoint.com/c/GFooWMvO2s8

Cdlmnt
0
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...)
0
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
14 juin 2017 à 17:10
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
0
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 !
0
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
Modifié le 14 juin 2017 à 17:57
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
0
Après quelques modifications, ça fonctionne.

Merci beaucoup !
0
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
15 juin 2017 à 12:08
De rien

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

Bonne journée
0