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
 

Sylvie64

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

Bonjour job75,

Cela avance très bien encore merci.

J'ai un petit souci, vous avez adapté une ligne au code pour effacer les lignes entières

Le problème est, qu'il m'efface toutes les formules de "Q à AA"

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


Merci

Sylvie
 

job75

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

Bonjour Sylvie, le forum,

Pour effacer jusqu'à la ligne P sur Chrono A 12, F sur Chrono C 12 :

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.Range("A" & lig & ":P" & 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.Range("A" & lig & ":F" & Rows.Count).ClearContents
End Sub
A+
 

Sylvie64

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

Je viens de m'apercevoir que sur le fichier source :
pour la ligne 43, votre code sur le fichier de destination est :

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"
(c'est ok, même super, je rajoute toutes les lignes que je veux)

Il y a également les lignes A45, A47, A49 (qui apparaissent occasionnellement sur le fichier source, seulement c'est trois ligne là)

Se serait bien qu'une ligne supplémentaire s'ajoute sur le fichier de destination. (ligne complète, date etc...)

J'ai bien rajouter le code : F.Cells(lig, 9).Formula = t & "A45" mais ce n'est pas ça du tout !

Je n'ai pas encore commencer le deuxième fichier, mais je pense avec tout ce que vous m'avait donné
je devrais y arriver

Merci
 

Sylvie64

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

Bonjour,

Je recherche une formule qui m'indique le nombre de cellule qui contiennent des écrits.

16 cellules en tout, dont 9 sont écrite.

au résultat de la formule, je dois avoir "9"

Ce lien n'existe plus

Merci

Sylvie
 

job75

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

Re,

C'est un fil à rallonge mais bon :)

1) Si les cellules "vides" sont bien vides :

=NBVAL(A1:B8)

2) Si les cellules "vides" contiennent le texte vide "" :

= NB.SI(A1:B8;"><")+NB(A1:B8)

Les valeurs logiques ou d'erreur ne sont pas comptées.

A+
 

Sylvie64

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

Bonjour job75,

je sais, je vous ai énormément sollicité, mais encore deux trois petites choses et vous aurez fait un travail extraordinaire.
Je vous en remercierai jamais assez.

1- fichier source (post#19) "année_2012" les lignes en rouge doivent apparaitre a la suite du fichier de destination
"A et C 2012" feuil "Chrono A 12"
Ce lien n'existe plus

2- fichier source "caus_2012" qui avec votre "code MAJ2" apparait sur le tableau du fichier de destination
"A et C 2012" feuil "Chrono C 12" mais il faudrait également que les données de ce fichier apparaissent sur la feuil "Obs 12" (j'y ai écris les cellules)

J'ai pu créer et rentré 48 feuil "année_2012" autant avec "caus_2012" vers le fichier de destination
dont je ne pas m'en occuper (ou presque) et après je m'attaque à l'année 2013 un gain de temps ENORME.

Vous pouvez pas savoir le gain de travail grâce à vous.

Bien merci
 

job75

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

Bonjour Sylvie, le forum,

Point 1

Vous ne pouvez pas faire cela car chaque ligne de la feuille de destination correspond à une feuille différente du fichier source.

Point 2

Si à partir du fichier caus_2012.xlsx vous voulez alimenter 2 feuilles, paramétrez la macro MAJ2 avec 2 feuilles :

Code:
Private Sub Workbook_Activate()
'Feuil3 Feuil4 Feuil5 => CodeName des feuilles de destination
MAJ1 "année_2012.xlsx", Feuil3
MAJ2 "cause_2012.xlsx", Feuil4, Feuil5
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.Range("A" & lig & ":P" & Rows.Count).ClearContents
End Sub

Sub MAJ2(fich$, F1 As Worksheet, F2 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 & "'!"
  'code pour alimenter la feuille F1 => F1.Cells...
  'code pour alimenter la feuille F2 => F2.Cells...
  lig = lig + 1
Next
F1.Range("A" & lig & ":F" & Rows.Count).ClearContents
F2.Range("A" & lig & ":I" & Rows.Count).ClearContents ' à voir
End Sub
A+
 

job75

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

Re,

Pour le point 1 j'espère que ce fichier année_2012.xlsx vous donnera des idées.

Voyez les formules de concaténation des cellules J43 K43 L43 M43.

Dans la feuille de destination les cellules correspondantes doivent être au format "Renvoyer à la ligne automatiquement".

A+
 

Pièces jointes

  • année_2012.xlsx
    23.8 KB · Affichages: 37

job75

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

Re,

En plus du renvoi automatique il faut (sans doute) prévoir aussi un ajustement automatique de la hauteur des lignes.

Donc dans la macro MAJ1 ajouter avant l'instruction lig = lig + 1 :

Code:
F.Rows(lig).AutoFit 'ajustement de la hauteur de ligne
A+
 

Sylvie64

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

Bonsoir job75,

Grâce à vous, j'ai pu rattraper tout le retard de l'année 2012, un grand merci.

Encore une dernière petite chose.

Sur la photo ci-dessous, j'ai une "date de départ", "une date prévu" et une "date réalisé" quand il y a
un jour de décalage dans la cellule "délai" il me met 1, là tout va bien.
Ce lien n'existe plus

Mais quand, je n'ai pas de date dans "une date prévu" et "date réalisé" dans la cellule "délai" il me met -41 255:mad:

La formule qui se trouve dans la cellule "délai" ci-après
=SI(K8="";"";SI(L8<>"";L8;MAINTENANT())-A8)

J'aimerai qu'il n'y est rien dans cette cellule et pourquoi un chiffre pareil ?

Merci pour votre réponse et de votre gentillesse.

Sylvie
 

job75

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

Bonjour Sylvie,

En K8 et L8 il n'y a pas "rien" mais la valeur 0...

Vous ne le voyez pas puisque vous avez décoché l'affichage des valeurs zéro.

En Q8 il faut la formule :

Code:
=SI(OU(K8="";K8=0);"";SI(ET(L8<>"";L8<>0);L8;MAINTENANT())-A8)
Mais cette modification n'est pas nécessaire si vous utilisez les cellules J43 K43 L43 M43 du fichier source année _2012.xlsx qui renvoient toutes du texte.

Par contre, s'il y a plusieurs dates dans la cellule M43, la formule ne pourra que renvoyer #VALEUR!.

Normal, la concaténation de dates ne donne pas une date...

A+
 
Dernière édition:

job75

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

Re,

Bon j'ai créé la fonction DELAI :

Code:
Function DELAI(d1, d2, deb) As String
Dim s, i%
If d1 = "" Or deb = "" Then Exit Function
s = Split(d2, vbLf)
For i = 0 To UBound(s)
  If s(i) = "" Then s(i) = Now
  s(i) = CDate(s(i)) - deb
Next
DELAI = Join(s, vbLf)
End Function
Elle est utilisée en colonne Q feuille Chrono A12 du fichier A et C 2012.xlsm et fait la même chose que votre formule.

Elle renvoie du texte car il peut y avoir plusieurs nombres concaténés.

La colonne Q, comme les colonnes I J K L, est dotée du renvoi à la ligne automatique.

Je n'avais pas encore joint de fichiers, les voici donc, ils récapitulent ce qui a été fait.

A+
 

Pièces jointes

  • FICHIERS EXCEL(1).zip
    74.1 KB · Affichages: 16

Discussions similaires

Réponses
8
Affichages
707

Statistiques des forums

Discussions
312 769
Messages
2 091 935
Membres
105 113
dernier inscrit
AOUJIL