Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copier une valeur dans un autre classeur avec recherche

  • Initiateur de la discussion Initiateur de la discussion olive323
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

olive323

XLDnaute Occasionnel
Bonjour a tous

Je voudrais coller une valeur dans un autre classeur avec une rec herche de la meme date

classeur 1 vers classeur2

est ce quelqu'un a un exemple de macro svp

cordialement
 

Pièces jointes

Re : Copier une valeur dans un autre classeur avec recherche

Bonjour olive323,

Une base de travail ci-dessous. Le classeur "ParMois.xls" dans le code, désigne ton classeur2 (celui avec un onglet par mois).
Attention, pour exécuter ce code, il faut que le second classeur soit préalablement ouvert. Pour tester, j'avais placé ce code dans l'Objet "Feuil1" de ton "Classeur1".

Je parle d'une base de travail, parce qu'il devrait fonctionner dans des "conditions normales". Pas de gestion des erreurs prévue (j'avais écrit "Février" avec un accent et toi pas, par exemple ... ce qui en provoquait une, d'erreur, of course 🙄)

A tester et compléter, donc ...
VB:
Sub repartition()
tabMois = Array("Janvier 11", "Fevrier 11", "Mars 11") ' ... à suivre
For Each c In Range("A6:A" & Range("A" & Rows.Count).End(xlUp).Row)
    Set cible = Workbooks("ParMois.xls").Sheets(tabMois(Month(c) - 1)).Range("A:A").Find _
    (what:=c.Value, LookIn:=xlFormulas, lookat:=xlWhole)
    If Not cible Is Nothing Then
        cible.Offset(, 1) = c.Offset(, 1)
    Else
        MsgBox "date non reprise"
    End If
Next c
End Sub
 
Re : Copier une valeur dans un autre classeur avec recherche

Bonjour Modeste,
je n'arrive pas à comprendre le fonctionnement de la macro, par exemple si je veux que les valeurs se collent en colonne D.
j'essaie de rajouter un + 2 mais ca marche pas.

Cordialement

olive323
 
Re : Copier une valeur dans un autre classeur avec recherche

Bonjour Modeste et a tous,

Voila ou j'en suis pour le moment, maintenant je bloque car je souhaiterais reporter dans des cellules différentes la somme des lignes, par rapport a la date et à la fonction.
Je ne vois pas comment faire

As tu encore un ptit code🙂

Cordialement

Olive323
 

Pièces jointes

Re : Copier une valeur dans un autre classeur avec recherche

Bonjour olive323,

Ce n'est déjà pas souvent que quelqu'un intervient après moi 🙁 ... mais si tu m'adresses le message, ce sera pire encore et nous n'aurons pas le plaisir de voir fleurir d'autres propositions!

J'ai lu ton message, ai ouvert tes fichiers, ai secoué dans tous les sens ... mais je ne sais pas ce que tu veux faire, ni où tu souhaites le faire (aux alentour des colonnes J et K de la feuille "résultat du tri" ?) mais je n'y vois que des fonctions et des nombres (donc pas de dates, alors que tu en parles)
Dans le programme, je touve
Code:
liste(c.Value & "#" & c.Offset(, 25)) = liste(c.Value & "#" & c.Offset(, 25)) + 1
... mais il n'y a plus rien 25 colonnes à droite de la colonne B!? S'il s'agit de compter le nombre de dates différentes, un simple countIf aurait suffi. Quel est le lien entre ta demande et le second fichier??

Bref, tu as posté deux messages, tu sembles avoir joint des bouts de code sans lien au départ (même s'ils ont des similitudes). Le code proposé initialement, n'est peut-être plus adapté à l'évolution du fichier (ou l'exemple que tu fournis n'est que très partiel par rapport à ton fichier réel)

Quoi qu'il en soit, je m'y perds un peu 😱 Pourrais-tu prendre le temps de re-préciser ce que tu voudrais faire, à quel endroit et en intégrant ta demande actuelle dans une démarche d'ensemble (tu es certain que ma toute première proposition: travailler avec un TCD n'aurait pas été préférable?)
 
Re : Copier une valeur dans un autre classeur avec recherche

Bonsoir à tous ( ta vu m.....e je ne t'adresse pas le mess)🙄

J'aimerais que la macro tienne compte de la date, de la fonction ( general, M1,M9) et colle la valeur de la colonne Nombre.

Donc du:
fichier TRI%20sof-porlin / onglet Resultat du TRI vers fichier CA2011 mois et jour correspondant

Exemple:
l'objectif est que la valeur de la cellule G3 se colle dans le fichier CA2011/ onglet Mai 11 /cellule C11.(même ligne que la date) idem pour les 3 lignes fonction General

Jusqu'ici la macro fait le boulot.

Mais pour la valeur de la cellule G6 vu que la fonction change (M1)
l'objectif est que la valeur G6 se colle dans le fichier CA2011/ onglet Mai 11 /cellule X11.(même ligne que la date)

Idem pour la valeur de la cellule G9 vu que la fonction change (M9)
l'objectif est que la valeur 9 se colle dans le fichier CA2011/ onglet Mai 11 /cellule Z12.(même ligne que la date)

etc...

Suis- je plus clair sur mon attente😕

Je rejoins les fichiers avec un peu de couleur peut etre plus clair
pas toujours facile de retranscrire son attente🙂

PS: le fichier réel CA2011 s'étale sur 200 colonnes, parmis ces colonnes certaines correspondent à une fonction (il y a environ une vingtaine de fonction)c'est pour ca que je colle 25, 30, ou 110 colonnes après la colonne B.



Cordialement

Merci pour votre aide

Olive 323
 

Pièces jointes

Dernière édition:
Re : Copier une valeur dans un autre classeur avec recherche

Bonsoir,

J'ai décidément toujours autant de mal à comprendre les tenants et aboutissants de ton projet ... Un essai de plus, en modifiant le code de mon message #2 ... Si j'ai bien compris 😕

... Mes hommages à Céline 🙄

VB:
Sub repartition3()
Const General = 3 'colonne C
Const M1 = 24 'colonne X
Const M9 = 26 'colonne Z
tabMois = Array("Janvier 11", "Fevrier 11", "Mars 11", "avril 11", "mai 11", "Juin 11", "Juillet 11", "Aout 11", "Septembre 11", "Octobre 11", "Novenbre 11", "Decembre 11") ' ... à suivre
With Sheets("Resultat du TRI")
    For Each c In Range("E3:E" & Range("E" & Rows.Count).End(xlUp).Row)
        Set cible = Workbooks("CA2011.xls").Sheets(tabMois(Month(c) - 1)).Range("A:A").Find _
            (what:=c.Value, LookIn:=xlFormulas, Lookat:=xlWhole)
        If Not cible Is Nothing Then
            Select Case c.Offset(, 1)
                Case "General"
                    cible.Offset(, General - 1) = c.Offset(, 2)
                Case "M 1"
                    cible.Offset(, M1 - 1) = c.Offset(, 2)
                Case "M 9"
                    cible.Offset(, M9 - 1) = c.Offset(, 2)
            End Select
        Else
            MsgBox "Date non trouvé"
        End If
    Next c
End With

MsgBox "L'opération s'est déroulé correctement Céline"
End Sub

P.S.: je verrais assez bien un 'm' à novembre, dans le tableau des mois 😛
 
Re : Copier une valeur dans un autre classeur avec recherche

Salut Modeste,

Ecoute que dire a part parfait, c'est exactement ce qui me fallait.

Je te remercie encore.

Excellent Week end

Olivier
 
Re : Copier une valeur dans un autre classeur avec recherche

Bonjour,

Encore une petit question, penses tu qu'il soit possible d'intégrer une const divers, qui prendrait en compte tous ce qui est different de general?

Comme ci dessous ca fonctionne,mais je voudrais que le divers ne tienne pas compte des changement de fonction.
Par exemple s'il y a 4 valeurs differente de general a la date du 04/04/11 il faudrait que sa compte 4. Actuellement ca me compte 1,1,1,1 en prenant en compte la derniere valeur. donc resulltat 1.




Sub repartition3()
Const General = 35
const divers = 4


tabMois = Array("Janvier 11", "Fevrier 11", "Mars 11", "avril 11", "mai 11", "Juin 11", "Juillet 11", "Aout 11", "Septembre 11", "Octobre 11", "Novembre 11", "Decembre 11") ' ... à suivre
With Sheets("Resultat du TRI")
For Each c In Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row)
Set cible = Workbooks("CA2011.xls").Sheets(tabMois(Month(c) - 1)).Range("A:A").Find _
(what:=c.Value, LookIn:=xlFormulas, Lookat:=xlWhole)
If Not cible Is Nothing Then
Select Case c.Offset(, 1)
Case "General"
cible.Offset(, General - 1) = c.Offset(, 2)

Case is <> "general"
cible.Offset(, divers - 1) = c.Offset(, 2)


End Select
Else
MsgBox "Date non trouvé"
End If
Next c
End With

MsgBox "L'opération s'est déroulé correctement Céline"
End Sub

Cordialement

Olive323
 
Re : Copier une valeur dans un autre classeur avec recherche

Bonjour olive323,

Eh beh, ... c'est toujours aussi limpide! 😱

il faudrait que sa compte 4. Actuellement ca me compte 1,1,1,1 en prenant en compte la derniere valeur. donc resulltat 1.
On pourrait avoir la version longue et illustrée du même passage??
 
Re : Copier une valeur dans un autre classeur avec recherche

Salut a vous,

Ok avec le fichier joint c'est sans doute mieux🙂

Si tu veux regarder dans le fichier CA2011 onglet Avril,

Si je ne suis toujours pas limpide dit le moi.😀 je tenterais une autre explication.

Merci


Cordialement

Olive323
 

Pièces jointes

Re : Copier une valeur dans un autre classeur avec recherche

Bonsoir,

Je crains qu'il ne faille te résoudre à donner une explication complémentaire.
J'essaie de faire le lien avec les demandes précédentes, mais sans succès: tu ne comptabilises plus les autres fonctions (M1, M9, etc. ... qui sont devenues pierre et alain)? On compte simplement les "general" et "les autres"? Pour une même date, on compte le nombre "d'autres" ou on tient compte des valeurs en colonne C de "resultat TRI"?
Si la dernière hypothèse est la bonne, essaie
VB:
Case Is <> "general"
cible.Offset(, test - 1) = cible.Offset(, test - 1) + c.Offset(, 2)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
380
Réponses
4
Affichages
282
Réponses
3
Affichages
227
Réponses
18
Affichages
421
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…