Tableau récapitulatif

Résolu
cedrixxx Messages postés 37 Statut Membre -  
cedrixxx Messages postés 37 Statut Membre -
Bonjour a toutes et a tous,

Alors voila mon problème j'ai dans une feuille de calcul qui repère une erreur "Machine non répertorié" en colonne AJ, j'ai en colonne AF le numéro de machine correspondante.

J'aimerais avoir une petite liste récapitulatif sur une autre feuille qui mettrais les numéros de machines classé comme "Machine non répertorié"

36_24
36_60
36_60
36_68
36_68
40_01 Machine non répertorié
40_01 Machine non répertorié
40_01 Machine non répertorié
40_06 Machine non répertorié
40_06 Machine non répertorié
40_06 Machine non répertorié
40_06 Machine non répertorié
40_06 Machine non répertorié
40_06 Machine non répertorié
40_06 Machine non répertorié
40_06 Machine non répertorié
40_53 Machine non répertorié
40_56
40_57

Ce qui donnerais par exemple:
Machines non répertorié:
40_01
40_06
40_53

Merci par avance.

8 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Un exemple à adapter (avec macro)
    http://www.cjoint.com/c/FIAoB64xCFq

    Cdlmnt
    1
    1. cedrixxx Messages postés 37 Statut Membre 1
       
      Bonjour,
      C'est exactement ce dont j'avais besoin, merci beaucoup.
      Cependant je n'arrive pas à retranscrire la macro dans mon fichier, enfin j'ai une erreur persistante "erreur 1004 cette action ne peut pas être appliqué a une cellule fusionné"
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Les cellules fusionnées sont toujours une source de problèmes aussi bien dans l'utilisation de fonctions excel que dans l'utilisation de macros.
    Pour essayer d'aller plus loin, peux tu envoyer un bout de ton fichier, sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu

    1) Tu vas dans https://www.cjoint.com/
    2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
    3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
    4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
    en bleu souligné ; tu le sélectionnes et tu fais "Copier"
    5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
    tu fais "Coller".

    Cdlmnt
    1
    1. cedrixxx Messages postés 37 Statut Membre 1
       
      https://www.cjoint.com/doc/16_09/FIBlIqfSA6t_R%C3%A9activit%C3%A9-et-dispo-Juillet.xls

      ub Test_Indispo()
      '
      ' Test_Indispo Macro
      '
      ' Touche de raccourci du clavier: Ctrl+a
      '
          Application.Run "PERSONAL.XLSB!Test_Indispo"
          Range("AI6").Select
          Application.Run "PERSONAL.XLSB!Test_Indispo"
          Option Explicit
      
      ' constantes à modifier selon ta configuration
      ' Feuille Source
      Const FS = "Données_corrigées"
      Const lidebFS = 2
      Const comacFS = "AF"
      Const coerrFS = "AJ"
      ' Feuille But
      Const FB = "Listing-machine"
      Const celdebFB = "A147"
      ' message recherché
      Const s = "Machine non répertorié"
      
      Public Sub OK()
      Dim liFS As Long, lifinFS As Long
      Dim dico As Object, cle As String, cles, nbcles As Long
      ' dictionnaire des machines en erreur
      Set dico = CreateObject("scripting.dictionary")
      With Sheets(FS)
        lifinFS = .Range(comacFS & Rows.Count).End(xlUp).Row
        For liFS = lidebFS To lifinFS
          If s = .Range(coerrFS & liFS).Value Then
            cle = .Range(comacFS & liFS).Value
            If (Not dico.exists(cle)) Then dico.Add cle, 1
          End If
        Next liFS
      End With
      nbcles = dico.Count
      cles = dico.keys
      ' resultat
      With Sheets(FB)
        .Columns(Range(celdebFB).Column).ClearContents
        .Range(celdebFB).Offset(-1, 0).Value = s
        .Range(celdebFB).Resize(nbcles, 1) = Application.Transpose(cles)
      End With
      End Sub
      
      End Sub
      


      Je pense ne pas trop être a coter de la plaque mais bon...
      Pour le résultats s'il n'est pas en A147 ce n'est pas vraiment grave tant que le listing des machines "en erreur" est facilement visible.

      Cordialement,
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    1. Dans ta procedure Test_Indispo
    Tu supprimes tout ce qui à trait à ma procedure OK
    Tu remplaces le tout par un appel à la procedure OK
    Call OK
    2. Dans un module général (Module 1 par exemple), tu colles ceci (j'ai souligné les lignes modifiées)
    Option Explicit

    ' constantes à modifier selon ta configuration
    ' Feuille Source
    Const FS = "Données_corrigées"
    Const lidebFS = 2
    Const comacFS = "AF"
    Const coerrFS = "AJ"
    ' Feuille But
    Const FB = "Listing-machine"
    Const celdebFB = "A147"
    ' message recherché
    Const s = "Machine non repertorier"

    Public Sub OK()
    Dim liFS As Long, lifinFS As Long
    Dim dico As Object, cle As String, cles, nbcles As Long
    ' dictionnaire des machines en erreur
    Set dico = CreateObject("scripting.dictionary")
    With Sheets(FS)
    lifinFS = .Range(comacFS & Rows.Count).End(xlUp).Row
    For liFS = lidebFS To lifinFS
    If s = .Range(coerrFS & liFS).Value Then
    cle = .Range(comacFS & liFS).Value
    If (Not dico.exists(cle)) Then dico.Add cle, 1
    End If
    Next liFS
    End With
    nbcles = dico.Count
    cles = dico.keys
    ' resultat
    With Sheets(FB)
    .Range(celdebFB).Resize(1000, 1).ClearContents
    .Range(celdebFB).Offset(-1, 0).Value = s
    .Range(celdebFB).Resize(nbcles, 1) = Application.Transpose(cles)
    End With
    End Sub

    3. Je ne comprends pas ce que viennent faire ces lignes
    Sub Test_Indispo()
    '
    ' Test_Indispo Macro
    '
    ' Touche de raccourci du clavier: Ctrl+a
    '
    Application.Run "PERSONAL.XLSB!Test_Indispo"
    Range("AI6").Select
    Application.Run "PERSONAL.XLSB!Test_Indispo"
    Option Explicit

    Cdlmnt
    1
    1. cedrixxx Messages postés 37 Statut Membre 1
       
      C'est la première fois que je fait du VBA et j'ai un peux de mal je dois l'avouer, les lignes que tu cites ont été créer automatiquement quand j'ai essayer de créer une nouvelle macro.
      0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Dans ce cas, le code que je t'ai proposé ci-dessus suffit. A mettre dans un module général (dans l'éditeur vba Insertion/Module pour en créer un)
    Si tu veux des explications, tu dis

    Cdlmnt
    1
    1. cedrixxx Messages postés 37 Statut Membre 1
       
      J'ai un message d'erreur quand je lance le programme j'ai une erreur de compilation à l'endroit ou j'ai mis le "call"

      Const s = "Machine non répertorié" => j'ai corriger la faute sur le fichier excel


      Call OK
      Dim liFS As Long, lifinFS As Long
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Tu laisses tomber la partie 1 ci-dessus
    Seule la partie 2 est à utiliser
    depuis Option xplicit jusqu'à End Sub
    Tu peux changer le nom de la procédure OK si tu veux
    Public Sub OK() par Public Sub Test_Indispo()
    Je te renvoies ton fichier avec la procedure OK dans le Module 1
    http://www.cjoint.com/c/FICjrYsC8rq

    Cdlmnt
    1
    1. cedrixxx Messages postés 37 Statut Membre 1
       
      Merci infiniment pour votre aide j'aurais mit des mois a faire cela,
      J'ai d'autre petits projets d'amélioration mais je vais déjà essayer de comprendre en détails la macro que vous m'avez fournit et essayer par moi même. Vous risquez quand même de me recroiser ici.
      0
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    De rien,

    Si c'est fini, peux tu mettre le sujet à résolu (en dessous du titre de ton premier message)

    Cdlmnt
    0
    1. cedrixxx Messages postés 37 Statut Membre 1
       
      Sur ton fichier sa marche impeccable mais quand j'essaye de mettre sur un autre fichier "identique" j'ai erreur d'exécution "13"
      Incompatibilité de type


      .Range(celdebFB).Resize(nbcles, 1) = Application.Transpose(cles)
      0
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    lorsque l'reeur se produit, passes sur la variable nbcles
    Je pense qu'elle est égale à 0, ça doit encore être une histoire de "machine non repertorier" sur le fichier que j'ai
    Il te suffit de mofifier le texte dans les constantes
    Const s = "Machine non repertorier"

    Cdlmnt
    0
    1. cedrixxx Messages postés 37 Statut Membre 1
       
      Non j'ai bien changé le texte rechercher mais j'ai la même erreur.
      Cldment,
      0
  9. ccm81 Messages postés 11033 Statut Membre 2 434
     
    tu ne reponds pas à ma question
    lorsque l'reeur se produit, passes sur la variable nbcles
    as tu aussi vérifié les valeurs des autres constantes ?

    Cdlmnt
    0
    1. cedrixxx Messages postés 37 Statut Membre 1
       
      Excuse moi, j'ai oublier d'en parler.
      En effet la variable nbcles=0, et cle=""

      EDIT: C'est bien moi qui n'avais pas vu un changement entre ma constante s et le message "source"
      0