suite Rech formule pour 2ème feuil.

Sylvie64

XLDnaute Occasionnel
Bonsoir,

Je travail toujours sur deux fichiers. (voir pj)

Fichier année_2012 en C28, E28 et G28 j'ai une, deux ou trois lettres qui apparait selon les risques.
(merci à Nairolf pour ça formule)

J'aimerai qu'elles apparaissent sur mon fichier A et C 2012 dans la cellule E6
(merci à job75 pour ça macro)

Sachant qu'il aura toujours une feuil qui va se rajouter sur mon fichier "année_2012"

Un très grand merci pour votre aide et votre patience.

Sylvie
 

job75

XLDnaute Barbatruc
Re : suite Rech formule pour 2ème feuil.

Bonjour Sylvie,

Remplacez la macro par celle-ci :

Code:
Private Sub Workbook_Activate()
Dim fich$, F As Worksheet, Wb As Workbook, w As Worksheet, lig&, t$, x$
fich = "année_2012.xlsx" 'nom à adapter
Set F = Feuil3 'CodeName de la feuille de destination
On Error Resume Next 'si le fichier n'est pas ouvert
Set Wb = Workbooks(fich)
If Err Then Exit Sub
On Error GoTo 0
lig = 6
For Each w In Wb.Worksheets
  t = "='[" & fich & "]" & w.Name & "'!"
  F.Cells(lig, 1).Formula = t & "D1"
  F.Cells(lig, 3).Formula = t & "E4"
  F.Cells(lig, 4).Formula = t & "E7"
  x = Replace(t & "E28" & t & "G28", "=", "&")
  F.Cells(lig, 5).Formula = t & "C28" & x
  F.Cells(lig, 7).Formula = t & "A32"
  F.Cells(lig, 9).Formula = t & "A43"
  F.Cells(lig, 10).Formula = t & "D43"
  F.Cells(lig, 11).Formula = t & "E43"
  F.Cells(lig, 12).Formula = t & "H43"
  lig = lig + 1
Next
F.Range("A" & lig & ":A" & Rows.Count).ClearContents
End Sub
Les variables intermédiaires t et x permettent d'alléger le code.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : suite Rech formule pour 2ème feuil.

Re,

Le code précédent ne fonctionnera pas si le nom du fichier ou celui d'une feuille contient le signe =.

Alors utilisez plutôt :

Code:
Private Sub Workbook_Activate()
Dim fich$, F As Worksheet, Wb As Workbook, w As Worksheet, lig&, t$, x$
fich = "année_2012.xlsx" 'nom à adapter
Set F = Feuil3 'CodeName de la feuille de destination
On Error Resume Next 'si le fichier n'est pas ouvert
Set Wb = Workbooks(fich)
If Err Then Exit Sub
On Error GoTo 0
lig = 6
For Each w In Wb.Worksheets
  t = "='[" & fich & "]" & w.Name & "'!"
  F.Cells(lig, 1).Formula = t & "D1"
  F.Cells(lig, 3).Formula = t & "E4"
  F.Cells(lig, 4).Formula = t & "E7"
  x = "&" & Mid(t, 2)
  F.Cells(lig, 5).Formula = t & "C28" & x & "E28" & x & "G28"
  F.Cells(lig, 7).Formula = t & "A32"
  F.Cells(lig, 9).Formula = t & "A43"
  F.Cells(lig, 10).Formula = t & "D43"
  F.Cells(lig, 11).Formula = t & "E43"
  F.Cells(lig, 12).Formula = t & "H43"
  lig = lig + 1
Next
F.Range("A" & lig & ":A" & Rows.Count).ClearContents
End Sub
A+
 
Dernière édition:

Sylvie64

XLDnaute Occasionnel
Re : suite Rech formule pour 2ème feuil.

Bonjour job75,

mille merci, franchement c'est super et incroyable !

Toujours sur les mêmes fichiers :eek::

fichier année_2012

Quand il y a un total sur la colonne I14 à I26

Ce qui apparait en colonne A14 à A26

doit apparaitre sur le fichier A et C 2012 en F6,
(merci à fanfan38 et Dugenou pour leurs formules)

exemple : ici en F6 (sur le fichier A et C 2012) doit apparait "EPI" qui se trouve sur le fichier année_2012

En espérant avoir était clair.:p
Merci pour votre aide.

Sylvie
 

job75

XLDnaute Barbatruc
Re : suite Rech formule pour 2ème feuil.

Bonjour Sylvie,

Le plus simple est de mettre dans une cellule de chaque feuille du fichier "année_2012.xlsx" le résultat que vous voulez obtenir.

Cette cellule sera par exemple en colonne J qui serait masquée.

Cette cellule sera bien sûr reprise en F6 du 2ème fichier.

Nota : que doit être le résultat s'il y a plusieurs 1 en I14:I26 (feuille "30-01-2012") ?

A+
 

job75

XLDnaute Barbatruc
Re : suite Rech formule pour 2ème feuil.

Re,

Si vous voulez par exemple concaténer les textes en colonne A (fichier source), formule en J12 :

Code:
=SUPPRESPACE(REPT(A14&" ";I14>0)&REPT(A16&" ";I16>0)&REPT(A18&" ";I18>0)&REPT(A20&" ";I20>0)&REPT(A22&" ";I22>0)&REPT(A24&" ";I24>0)&REPT(A26;I26>0))
Les >0 sont inutiles s'il n'y a que des valeurs 1 en I14:I26.

A+
 

job75

XLDnaute Barbatruc
Re : suite Rech formule pour 2ème feuil.

Re,

Alors tant qu'à faire... entrez simplement en J28 des feuilles sources :

Code:
=C28&E28&G28
Et dans le fichier de destination plus besoin d'inventer la poudre :

Code:
Private Sub Workbook_Activate()
Dim fich$, F As Worksheet, Wb As Workbook, w As Worksheet, lig&, t$
fich = "année_2012.xlsx" 'nom à adapter
Set F = Feuil3 'CodeName de la feuille de destination
On Error Resume Next 'si le fichier n'est pas ouvert
Set Wb = Workbooks(fich)
If Err Then Exit Sub
On Error GoTo 0
lig = 6
For Each w In Wb.Worksheets
  t = "='[" & fich & "]" & w.Name & "'!"
  F.Cells(lig, 1).Formula = t & "D1"
  F.Cells(lig, 3).Formula = t & "E4"
  F.Cells(lig, 4).Formula = t & "E7"
  F.Cells(lig, 5).Formula = t & "J12"
  F.Cells(lig, 6).Formula = t & "J28"
  F.Cells(lig, 7).Formula = t & "A32"
  F.Cells(lig, 9).Formula = t & "A43"
  F.Cells(lig, 10).Formula = t & "D43"
  F.Cells(lig, 11).Formula = t & "E43"
  F.Cells(lig, 12).Formula = t & "H43"
  lig = lig + 1
Next
F.Range("A" & lig & ":A" & Rows.Count).ClearContents
End Sub
A+
 

Sylvie64

XLDnaute Occasionnel
Re : suite Rech formule pour 2ème feuil.

Bonjour job75,

J'admire ce que vous faites !
C'est magnifique.

Nota : que doit être le résultat s'il y a plusieurs 1 en I14:I26 (feuille "30-01-2012") ?
S'il y a deux 1, cela s'ajoute ex : EPI MAT (comme vous l'avez effectué dans votre formule, super)

Cette cellule sera par exemple en colonne J qui serait masquée.
J'avais pas pensée masquée la colonne et effectivement se sera plus facile !

Bravo à vous, un très grand merci.

Sylvie

Petite question :
Mon fichier source "année_2012" et fichier de destination "A et C 2012" pour la feuil "Chrono A 12" c'est ok

Est il possible d'avoir un deuxième fichier source (que je n'ai pas encore travailler et que je nommerais ex "Chrono_C_2012" et le fichier de destination serait le même c'est à dire "A et C 2012" mais avec la feuil "Chrono C 12" ?
 

job75

XLDnaute Barbatruc
Re : suite Rech formule pour 2ème feuil.

Re,

S'il faut mettre à jour plusieurs feuilles, utiliser la macro MAJ qui est paramétrée :

Code:
Private Sub Workbook_Activate()
'Feuil3 Feuil4 => CodeName des feuilles de destination
MAJ "année_2012.xlsx", Feuil3
MAJ "Chrono_C_2012.xlsx", Feuil4
End Sub

Sub MAJ(fich$, F As Worksheet)
Dim Wb As Workbook, w As Worksheet, lig&, t$
On Error Resume Next 'si le fichier n'est pas ouvert
Set Wb = Workbooks(fich)
If Err Then Exit Sub
On Error GoTo 0
lig = 6
For Each w In Wb.Worksheets
  t = "='[" & fich & "]" & w.Name & "'!"
  F.Cells(lig, 1).Formula = t & "D1"
  F.Cells(lig, 3).Formula = t & "E4"
  F.Cells(lig, 4).Formula = t & "E7"
  F.Cells(lig, 5).Formula = t & "J28"
  F.Cells(lig, 6).Formula = t & "J12"
  F.Cells(lig, 7).Formula = t & "A32"
  F.Cells(lig, 9).Formula = t & "A43"
  F.Cells(lig, 10).Formula = t & "D43"
  F.Cells(lig, 11).Formula = t & "E43"
  F.Cells(lig, 12).Formula = t & "H43"
  lig = lig + 1
Next
F.Range("A" & lig & ":A" & Rows.Count).ClearContents
End Sub
Nota : dans la macro précédente j'avais interverti "J12" et "J28".

A+
 

Sylvie64

XLDnaute Occasionnel
Re : suite Rech formule pour 2ème feuil.

Bien merci pour tout !!

Que voulez vous dire ?
utiliser la macro MAJ qui est paramétrée

Je viens de rentrer la macro, est ce qu'il faut que j'ai un fichier "Chrono_C_2012.xlsx" créer pour que cela fonctionne ?

Sylvie
 

job75

XLDnaute Barbatruc
Re : suite Rech formule pour 2ème feuil.

Re,

La solution précédente suppose que les fichiers et les feuilles ont la même structure.

Regardant Feuil4 je vois que ce n'est pas le cas.

Alors il faudra utiliser 2 macros MAJ1 et MAJ2 en adaptant pour la 2ème le code du post #9.

A+
 

job75

XLDnaute Barbatruc
Re : suite Rech formule pour 2ème feuil.

Re,

Voici le code, il vous faudra adapter MAJ2 :

Code:
Private Sub Workbook_Activate()
'Feuil3 Feuil4 => CodeName des feuilles de destination
MAJ1 "année_2012.xlsx", Feuil3
MAJ2 "Chrono_C_2012.xlsx", Feuil4
End Sub

Sub MAJ1(fich$, F As Worksheet)
Dim Wb As Workbook, w As Worksheet, lig&, t$
On Error Resume Next 'si le fichier n'est pas ouvert
Set Wb = Workbooks(fich)
If Err Then Exit Sub
On Error GoTo 0
lig = 6
For Each w In Wb.Worksheets
  t = "='[" & fich & "]" & w.Name & "'!"
  F.Cells(lig, 1).Formula = t & "D1"
  F.Cells(lig, 3).Formula = t & "E4"
  F.Cells(lig, 4).Formula = t & "E7"
  F.Cells(lig, 5).Formula = t & "J28"
  F.Cells(lig, 6).Formula = t & "J12"
  F.Cells(lig, 7).Formula = t & "A32"
  F.Cells(lig, 9).Formula = t & "A43"
  F.Cells(lig, 10).Formula = t & "D43"
  F.Cells(lig, 11).Formula = t & "E43"
  F.Cells(lig, 12).Formula = t & "H43"
  lig = lig + 1
Next
F.Rows(lig & ":" & Rows.Count).ClearContents
End Sub

Sub MAJ2(fich$, F As Worksheet)
Dim Wb As Workbook, w As Worksheet, lig&, t$
On Error Resume Next 'si le fichier n'est pas ouvert
Set Wb = Workbooks(fich)
If Err Then Exit Sub
On Error GoTo 0
lig = 6
For Each w In Wb.Worksheets
  t = "='[" & fich & "]" & w.Name & "'!"
  'suite du code à adapter comme MAJ1
  lig = lig + 1
Next
F.Rows(lig & ":" & Rows.Count).ClearContents
End Sub
Nota : je n'avais pas encore adapté la dernière ligne pour effacer les lignes entières :

Code:
F.Rows(lig & ":" & Rows.Count).ClearContents
A+
 

Sylvie64

XLDnaute Occasionnel
Re : suite Rech formule pour 2ème feuil.

Bon, là ça devient plus compliqué.
Plus rien ne fonctionne !

Pouvez vous regarder si j'ai bien mis les macros ?
Apparemment non :(

Le fait, de mettre une deuxième macro j'ai mis la pagaille !! alors que tout aller bien.:mad:


PS : effectivement se ne sera pas les mêmes fichiers. (dsl de ne pas l'avoir préciser)
 

Discussions similaires

Réponses
8
Affichages
682

Statistiques des forums

Discussions
312 497
Messages
2 088 992
Membres
104 000
dernier inscrit
dinelcia