Tableau récapitulatif

Résolu/Fermé
cedrixxx Messages postés 34 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 28 octobre 2016 - 26 sept. 2016 à 15:17
cedrixxx Messages postés 34 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 28 octobre 2016 - 4 oct. 2016 à 08:12
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

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
26 sept. 2016 à 16:28
Bonjour

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

Cdlmnt
1
cedrixxx Messages postés 34 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 28 octobre 2016 1
Modifié par cedrixxx le 27/09/2016 à 13:28
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
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
27 sept. 2016 à 16:08
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
cedrixxx Messages postés 34 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 28 octobre 2016 1
Modifié par cedrixxx le 27/09/2016 à 16:37
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
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 27/09/2016 à 17:38
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
cedrixxx Messages postés 34 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 28 octobre 2016 1
28 sept. 2016 à 08:24
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
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
28 sept. 2016 à 10:57
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
cedrixxx Messages postés 34 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 28 octobre 2016 1
28 sept. 2016 à 11:09
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
28 sept. 2016 à 11:22
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
cedrixxx Messages postés 34 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 28 octobre 2016 1
28 sept. 2016 à 12:47
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
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
28 sept. 2016 à 17:10
De rien,

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

Cdlmnt
0
cedrixxx Messages postés 34 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 28 octobre 2016 1
3 oct. 2016 à 11:30
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
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
3 oct. 2016 à 12:38
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
cedrixxx Messages postés 34 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 28 octobre 2016 1
3 oct. 2016 à 12:56
Non j'ai bien changé le texte rechercher mais j'ai la même erreur.
Cldment,
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 3/10/2016 à 15:20
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
cedrixxx Messages postés 34 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 28 octobre 2016 1
Modifié par cedrixxx le 4/10/2016 à 08:44
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