Créer une vu de synthèse en VBA

  • Initiateur de la discussion Initiateur de la discussion tony1711
  • 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 !

tony1711

XLDnaute Nouveau
Bonjour,

Je voudrais a partir d'un tableau de bord sur Excel créer un tableau de synthèse des tâche encore à faire.
Ce tableau de synthèse ne devrait contenir que le contenu des colonnes A-B-C-F-L-M-T pour les lignes qui contiennent la valeurs "EUI" en colonne L.

Le fichier excel servant egalement pour historique je voudrais que ma boucle commence par la fin et qu'elle s'arrete lorsqu'elle rencontre un "OK" en ligne x et colonne T
Quelqu'un pourrait- il me donner des indications pour ma boucle je suis un peu perdu
Merci d'avance
Cordialement
 

Pièces jointes

Re : Créer une vu de synthèse en VBA

Bonjour Benoit,

Tout d'abord merci pour ta réponse.
C'est exactement ce qu'il me faudrait, juste pour la colonne "Delai notif", serait il possible que l'on récupère la valeur de la cellule de la colonne T (Notif) du tableau de bord ?

Merci d'avance
 
Re : Créer une vu de synthèse en VBA

Re-bonjour.

On modifie le code ça sera plus simple.
Remplace le code par le suivant :

Code:
Option Explicit
Option Base 1

Sub Synthese()
Dim Wk As Workbook
Dim ShPlan As Worksheet, ShSyn As Worksheet
Dim lPlan As Long, lSyn As Long
Dim i As Long, j As Integer, k As Integer
Dim cSyn(), a, c
Dim d As Object

    Set Wk = ThisWorkbook
    Set ShPlan = Wk.Sheets("Planning"): Set ShSyn = Wk.Sheets("Synthese")
    lPlan = ShPlan.[a65000].End(xlUp).Row: lSyn = ShSyn.[c65000].End(xlUp).Row
    cSyn = Array(20, 12, 6, 19, 1, 2, 3, 13, 17)
    Set d = CreateObject("Scripting.Dictionary")
    
    With ShPlan
    j = 0
    For i = lPlan To 2 Step -1
    If .Cells(i, 20).Value = "OK" Then Exit For
    If .Cells(i, 12).Value = "EUI" Then
        j = j + 1
        For k = 1 To 9: d(j) = d(j) & .Cells(i, cSyn(k)).Text & "|": Next k
    End If
    Next i
    End With
     
    With ShSyn
    If lSyn > 2 Then .Rows("3:" & lSyn).EntireRow.Delete
    For Each c In d.keys
    a = Split(d(c), "|")
    .Cells(2 + c, 3).Resize(, UBound(a) - 1).Value = a
    Next
    End With
End Sub

J'avais mis comme critère pour quitter la boucle un "x" et pas un "OK".
Ensuite je récupère le texte et pas la valeur ça sera moins encombrant.
 
- 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
3
Affichages
1 K
Réponses
6
Affichages
1 K
Retour