Tableau synthèse recherche conditionnelle dans multiple feuille

adadck

XLDnaute Nouveau
Bonjour à tous,

Je suis lecteur habituel de votre forum de passionné, je trouve la plupart du temps réponse à mes questions dans divers sujets traités mais pas pour le problème suivant !

Le fichier sur lequel je cale est en pièce jointe.

Un tableau est complété dans plusieurs feuilles nommées par semaine (sem13,sem14 etc..).
Dans ce tableau il y a une case à cocher (cellule J4 à J30) "travaux réalisés".
J'aimerai "scanner" les tableaux dans les différentes feuilles et coller dans la feuille synthèse chaque ligne complétée où la case travaux réalisés n'a pas été cochée.

Le must serait de réussir à coller dans le fichier de synthèse la date à laquelle (semXX) le travaux a été planifié (nom de la feuille où la ligne a été copiée).


Merci d'avance des conseils.
 

Pièces jointes

  • Planning réparation matériel.xls
    178.5 KB · Affichages: 167

adadck

XLDnaute Nouveau
Re : Tableau synthèse recherche conditionnelle dans multiple feuille

Sauf erreur de ma part, je n'ai que le numéro de la liste qui s'affiche dans ma feuille synthèse (En cliquant sur le bouton).

Si j'excéture manuellement la macro Feuil7.test2, j'ai une erreur "l'indice n'appartient à la sélection".
 

Efgé

XLDnaute Barbatruc
Re : Tableau synthèse recherche conditionnelle dans multiple feuille

Re
Autant pour moi. Ce nétait pas le bon fichier. Désolé.
Cordiaement
 

Pièces jointes

  • Planning_réparation_matérielv4(3).zip
    30.9 KB · Affichages: 43

adadck

XLDnaute Nouveau
Re : Tableau synthèse recherche conditionnelle dans multiple feuille

Ca marche parfaitement !

Merci beaucoup Efgé pour ton aide.

Je continue de fouiller dans le forum pour améliorer mon fichier avec d'autres fonctions sympas !
 

adadck

XLDnaute Nouveau
Re : Tableau synthèse recherche conditionnelle dans multiple feuille

Juste une remarque sur le code :

Code:
Private Sub CommandButton1_Click()
Dim Tablo(), Liste(), F As Worksheet, i&, J&, K&, L&
With Sheets("Paramètres feuilles")
    Liste = .Range(.Cells(4, 1), .Cells(Rows.Count, 2).End(xlUp).Offset(0, 2)).Value
End With
K = 0
For Each F In Worksheets
    If F.Name <> "Synthèse" And F.Name <> "Paramètres feuilles" Then
        For i = 4 To F.Cells(Rows.Count, 2).End(xlUp).Row
            If F.Cells(i, 2).Value <> 0 And F.Cells(i, 2).Value <> "" And F.Cells(i, 10).Value = "Faux" Then
                K = K + 1
                ReDim Preserve Tablo(1 To 10, 1 To K)
                Tablo(1, K) = F.Name
                For J = 2 To 10
                    Tablo(J, K) = F.Cells(i, J)
                Next J
                For L = LBound(Liste, 1) To UBound(Liste, 1)
                    If Liste(L, 1) = Tablo(4, K) Then
                        Tablo(4, K) = Liste(L, 2)
                    ElseIf Liste(L, 1) = Tablo(7, K) Then
                        Tablo(7, K) = Liste(L, 3)
                    End If
                Next L
            End If
        Next i
    End If
Next F
With Sheets("Synthèse")
    .Range(Cells(4, 2), .Cells(Rows.Count, 2).End(xlUp).Offset(3, 9)).ClearContents
    .Cells(4, 2).Resize(UBound(Tablo, 2), 10) = Application.Transpose(Tablo)
End With
End Sub

Quand aucuns des critères ne permet d'importer des lignes dans "synthèse" ça bug.
Je pensai intégrer un Else du type :
Else: MsgBox "Pas de travaux en attente de réalisation"

Je n'arrive pas intégrer le Else après le bon "If" pour que le texte ne s'affiche que quand aucun critère n'est respecté ...
 

Efgé

XLDnaute Barbatruc
Re : Tableau synthèse recherche conditionnelle dans multiple feuille

Bonjour adadck, le fil, le forum
Exact, la situation n'était pas prévue, désolé.
Change:
VB:
With Sheets("Synthèse")
    .Range(Cells(4, 2), .Cells(Rows.Count, 2).End(xlUp).Offset(3, 9)).ClearContents
    .Cells(4, 2).Resize(UBound(Tablo, 2), 10) = Application.Transpose(Tablo)
End With
par
VB:
With Sheets("Synthèse")
    .Range(Cells(4, 2), .Cells(Rows.Count, 2).End(xlUp).Offset(3, 9)).ClearContents
    If K <> 0 Then
        .Cells(4, 2).Resize(UBound(Tablo, 2), 10) = Application.Transpose(Tablo)
    Else
        MsgBox "Pas de travaux en attente de réalisation"
    End If
End With
Cordialement
 

adadck

XLDnaute Nouveau
Re : Tableau synthèse recherche conditionnelle dans multiple feuille

Bonjour le forum, bonjour Efgé. Après plusieurs mois et même année d'utilisation du fichier, j'ai quelques modifications à apporter sur mon fichier (ajout de colonne) et je n'arrive pas à modifier ton code pour que la macro fonctionne correctement.

Code:
Private Sub CommandButton1_Click()
Dim Tablo(), Liste(), F As Worksheet, i&, J&, K&, L&
With Sheets("Paramètres feuilles")
    Liste = .Range(.Cells(4, 1), .Cells(Rows.Count, 2).End(xlUp).Offset(0, 2)).Value
End With
K = 0
For Each F In Worksheets
    If F.Name <> "Tvx non réalisés" And F.Name <> "Paramètres feuilles" Then
        For i = 4 To F.Cells(Rows.Count, 2).End(xlUp).Row
            If F.Cells(i, 2).Value <> 0 And F.Cells(i, 2).Value <> "" And F.Cells(i, 10).Value = "Faux" Then
                K = K + 1
                ReDim Preserve Tablo(1 To 10, 1 To K)
                Tablo(1, K) = F.Name
                For J = 2 To 10
                    Tablo(J, K) = F.Cells(i, J)
                Next J
                For L = LBound(Liste, 1) To UBound(Liste, 1)
                    If Liste(L, 1) = Tablo(4, K) Then
                        Tablo(4, K) = Liste(L, 2)
                    ElseIf Liste(L, 1) = Tablo(7, K) Then
                        Tablo(7, K) = Liste(L, 3)
                    End If
                Next L
            End If
        Next i
    End If
Next F
With Sheets("Tvx non réalisés")
    .Range(Cells(4, 2), .Cells(Rows.Count, 2).End(xlUp).Offset(3, 9)).ClearContents
    If K <> 0 Then
        .Cells(4, 2).Resize(UBound(Tablo, 2), 10) = Application.Transpose(Tablo)
    Else
        MsgBox "Pas de travaux en attente de réalisation"
    End If
End With
End Sub

Je suis un peu perdu dans tes variables pour les faire pointer vers les bonnes colonnes maintenant qu'elles se sont décalées ...

Peux-tu m'aider en mettant peut être deux trois commentaires pour que je puisse dans le futur modifier le code en cas d'ajout/supression de colonne.


Merci


Ci joint le fichier "allégé" car normalement, il y a 52 feuille, ici je n'ai laissé que la feuille 1.
 

Pièces jointes

  • Planning_réparation_matériel.xls
    260 KB · Affichages: 29

Efgé

XLDnaute Barbatruc
Re : Tableau synthèse recherche conditionnelle dans multiple feuille

Bonjour adadck

J'ai commenté le code.
Il faut garder à l'esprit que l'on crée le tableau final en l'inversant.
On connait le nombre de colonne du tableau final mais pas le nombre de ligne.
Donc on augmente au fur et à mesure les colonnes du tableau de travail (variable K) et en fin de traitement on le transpose (les lignes deviennent les colonnes et inversement)

C'est la méthode que j'avais prise à l'époque. Ceci à une limite : il ne faut pas dépasser 65000 lignes / colonnes.

Pour tes prochians fichiers exemple, merci de supprimer toutes macros de types AutoOpen, AutoClose etc....

Cordialement
 

Pièces jointes

  • Planning_réparation_matériel_09052014.xls
    87 KB · Affichages: 35

adadck

XLDnaute Nouveau
Re : Tableau synthèse recherche conditionnelle dans multiple feuille

Merci pour les commentaires dans ta macro.

J'ai un peu de mal avec cette partie de la macro :

Code:
'pour chaque Ligne L de notre liste
                For L = LBound(Liste, 1) To UBound(Liste, 1)
                    'si la valeur de la liste Ligne L colonne 1
                    'est égale à la valeur ligne 4 colonne K
                    If Liste(L, 1) = Tablo(4, K) Then
                        'on mets la valeur Liste  ligne L colonne 2
                        'dans le tableau ligne 4 colonne K
                        Tablo(4, K) = Liste(L, 2)
                    'Sinon, si Liste ligne L colonne 1 = Tablo(ligne 7 colonne K)
                    ElseIf Liste(L, 1) = Tablo(7, K) Then
                        'on mets la valeur de la liste ligne L colonne 3
                        'dans le tableau ligne 7 colonne K
                        Tablo(7, K) = Liste(L, 3)
                    'Fin de la condition
                    End If
                'prochaine Ligne L de notre liste
                Next L

J'ai modifié le début mais pas cette partie, du coup ça fonctionne mal ... C'est la gestion des listes déroulantes qui ne fonctionne plus convenablement ...


J'aimerai de plus ajouter une nouvelle "fonction" au fichier :

Dans mes feuilles hebdomadaire (la feuille 1 dans l'exemple), je vais ajouter une liste déroulante en colonne B, qui pointe vers la feuille "Paramètres feuilles" cellule de F4:F500, puis j'aimerai que ça réinsère dans ma feuille 1 les infos : type, marque, modèle, société automatiquement.

Sachant que la base de donnée "Parc engin" dans les paramètre va évoluer régulièrement et qu'un tri par ordre alphabétique de numéro de parc sera fait dans cette base, je ne sais pas s'il y a une autre solution pour les liste déroulante que de pointer vers la colonne précedente (ici ça serait la E) avec un numéro de 1 à 500 ?
 

Pièces jointes

  • Planning_réparation_matériel_09052014b.xls
    95 KB · Affichages: 27

Efgé

XLDnaute Barbatruc
Re : Tableau synthèse recherche conditionnelle dans multiple feuille

Bonjour adadck
Le code est adapté et re-commenté.
Pour ta nouvelle "fonction" ouvre une nouvelle discution
Cordialement
 

Pièces jointes

  • Planning_réparation_matériel_09052014b(1).xls
    97 KB · Affichages: 38

adadck

XLDnaute Nouveau
Re : Tableau synthèse recherche conditionnelle dans multiple feuille

Bonjour Efgé, je reviens vers toi pour mon problème de liste déroulante développé dans l'autre sujet, je souhaite uniformiser mon type de liste déroulante car j'ai solutionné mon problème avec "la commande Validation des données intégré dans le groupe Outils de données de l'onglet Données" et un recherchev.

Est-ce je peux utiliser ce type de liste dans tout le fichier (y compris dans les fonctions que tu as développé) ?

Le fichier est visible dans l'autre sujet
 

Discussions similaires

Statistiques des forums

Discussions
312 389
Messages
2 087 927
Membres
103 676
dernier inscrit
Haiti