XL 2010 Pas de doublon

Myst

XLDnaute Occasionnel
Bonjour le forum
J'aurais besoins de vos service pour résoudre un problème
Je voudrais ne pas pouvoir créer une ligne supplémentaire si elle existe déjà
Exemple : Je clique sur le "NON" de la ligne 18 en (K:18), l'Userform1 s'ouvre avec le chiffre de la colonne "A" dans le Textbox1 et celui de la colonne "B" dans le Textbox2, après avoir cliqué sur le boutton valider le chiffre du Textbox1 va remplir la dernière cellule vide de la colonne "A" et le Textbox2 + la valeur du Textbox3 va remplir la dernière cellule vide en colonne "B" mais rien n'empêche la création de doublons ,la ligne 20 est ainsi identique a la ligne 19 dans le fichier joint
Je voudrais interdire les doublons et faire en sort que cela tienne compte du chiffre le plus élevé par rapport a l'association des colonne A et B, c'est a dire que si j'ai 10 dans la colonne "A" je vérifie le chiffre correspondant de la colonne "B" et j'ajoute (1)
j'espère avoir été clair dans m'a demande, pas simple a détailler
merci
 

Pièces jointes

  • essai .xlsm
    21.3 KB · Affichages: 33

vgendron

XLDnaute Barbatruc
Hello

une version 4 qui interdit les dates farfelues genre 13/13/1800
et les boutons Nouvelle action ou Nouvelle Cause et Nouvelle fiche qui s'affichent ou pas quand il faut

pour la numérotation....
soit, tu laisses comme ca: mais avec 10 fiches maxi par Pb :50--->50.9 ---> ca reste des nombres avec lesquels on peut travailler avec la fonction Max, et incrément+0.1

soit... tu veux pouvoir avoir 50 ---->50.10 50.18 50.20.....
auquel cas, il va falloir travailler avec des chaines de caractère.. et donc;. modifier les fonctions Max et incrément....
 

Pièces jointes

  • Nouvelle Structure 4.xlsm
    90.1 KB · Affichages: 29

vgendron

XLDnaute Barbatruc
Et une version 5 avec des numéros de fiches qui peuvent aller jusqu'à -10 -15......
par contre, au lieu d'avoir un Point (.) comme séparateur, j'ai mis un Tiret (-).. sinon Excel va nous transformer ca à sa sauce...
 

Pièces jointes

  • Nouvelle Structure 5.xlsm
    98 KB · Affichages: 21

vgendron

XLDnaute Barbatruc
Du coup, faut que j'adapte aussi le code pour ton formulaire 'Modif_Fiche"
par contre. je ne comprend pas le besoin..
quand tu cliques sur Corriger.. ca corrige bien toute la ligne qui a été sélectionnée (en passant. ne faut il pas interdire la modification du numéro de la fiche??)

mais qand tu cliques sur Valider..
ca créé un nouvelle ligne ?? avec incrémentation du numéro de fiche?? ne faut il pas non plus vérifier que tu ne créés pas le fameux doublon de fiche?
 

Myst

XLDnaute Occasionnel
Bonjour vgendron, le forum
Je n'ai pas eu le temps de bien regarder les fichiers, je test demain et reviens vers toi si tu le permet
Tout me parais nickel a par la ligne ci dessous qui bug, je jette un œil demain
VB:
NumProbleme = Left(.Range("A" & Fin), InStr(.Range("A" & Fin), "-") - 1)
 

vgendron

XLDnaute Barbatruc
Hello
à quel moment as tu le bug?
je viens de lancer chez moi, et je n'ai pas de souci..

autre chose qui m'intrigue depuis le début en fait..
lorsque tu cliques en colonne J - à priori, c'est pour dire si le problème est résolu
donc. le formulaire s'ouvre et récupère les infos de la ligne sélectionnée
tu peux corriger pour modifier des infos. auquel cas. la ligne sélectionnée est REMPLACEE
soit tu indiques juste que le problème est résolu (ou non) avec une date et tu valides..
pourquoi ajouter une ligne?
ex: tu sélectionnes la ligne 53-1
tu choisis, Problème résolu, le 29/11/2017 et tu valides
tu vas donc avoir
- la ligne 53-1 toujours Non résolue
- et une nouvelle ligne 53-14 avec le MEME problème mais RESOLU
est ce voulu? comment fais tu le lien entre la ligne 53-1 et 53-14 ?
genre. tu (ou quelqu'un d'autre) reprends ton fichier dans un mois et tu vois la ligne 53-1
qu'est ce qui t'empeche de croire que le problème n'est toujours pas résolu (si tu ne vois pas la ligne53-14 qui ne se situe pas à coté...)
 

Myst

XLDnaute Occasionnel
Bonjour
J'ai le message suivant quand j'active l'Userform "FICHE"
Erreur d'exécution "5" : Argument ou appel de procédure incorrect , et cela me renvois a la ligne suivante
VB:
NumProbleme = Left(.Range("A" & Fin), InStr(.Range("A" & Fin), "-") - 1)
En ce qui concerne la colonne "J" l'idée est de pouvoir ajouter ou modifier une cause ou action ultérieurement
Dans le cas d'un ajout d'action, le numéro de ligne doit normalement suivre la numérotation du problème
Dans le cas d'une modification de ligne cela ne change rien le numéro de ligne reste identique
Par contre tu soulève un point important au sujet de la colonne "J"("Problème résolu"), un problème peut être résolu sans pour autant que toutes les actions soient faites, donc comment je pourrais faire pour avoir le décompte des problèmes résolu malgré que certaines actions ne le sont pas ?
 

vgendron

XLDnaute Barbatruc
Hello
Voici la rev 7 qui corrige le bug observé.

pour la suite..il y a quelques soucis à regler..
1) le tri des fiches
les numéros entiers 1 à 59 sont triés AVANT les fiches avec tiret
les numéros XX-10 à -19 sont ENTRE XX-1 et XX-2

2) Bien définir ce qu'est un Problème? --> c'est un numéro de fiche sans tiret ? (55 56 57) avec ses actions-taches associées (les numéros avec tirets 55-1-2-3...)
Comment identifies tu un problème résolu?

3) Ton formulaire "Modif_Fiche" au clic sur colonne J:
comme son nom l'indique. il ne devrait servir qu'à MODIFIER une ligne.. pas en créer de nouvelles
sert à passer une ligne en résolu ou non. et éventuellement modifier des élements de la ligne (description de l'action, de la cause..)

4) Pour créer de nouvelles actions/taches.. tu pourrais justement utiliser le formulaire "Sommaire"
avec quelques modifs de celui ci.
il permettrait de récuperer TOUTES les actions/taches liées à UN problème
et d'en ajouter
???
 

Pièces jointes

  • Nouvelle Structure 7.xlsm
    105.8 KB · Affichages: 31

vgendron

XLDnaute Barbatruc
bon.. pour le tri.. c'est réglé ! :)
VB:
Sub TriTablo()
'objectif avoir un tri comme suit:
'XX
'XX-1
'XX-2
'...
'XX-10
'XX-11
'YY
'...

'1 commencer par tout mettre sous la forme:
'XX-00   XX-01    XX-02   XX-10  YY-00
'2 trier
'3 remettre sous la forme initiale

Dim tablo() As Variant
With Sheets("Base de donnee")
    Fin = .Range("A" & .Rows.Count).End(xlUp).Row
    tablo = .Range("A3:J" & Fin).Value
    For i = LBound(tablo, 1) To UBound(tablo, 1) 'on met la colonne A sous la forme XX-xx
        On Error Resume Next
        gauche = Split(tablo(i, 1), "-")(0)
        droite = Split(tablo(i, 1), "-")(1)
        If droite = "" Then droite = 0
        tablo(i, 1) = Format(gauche, "00") & "-" & Format(droite, "00")
    Next i
  
'    With Sheets("Feuil1") 'on copie le résultat dans la feuille1
'        .Range("A1").Resize(UBound(tablo, 1)) = tablo
'    End With
  
    'il faut maintenant trier sur la colonne A
    indexColTri = 1 'colonne A
    For i = LBound(tablo, 1) To UBound(tablo, 1)
        For j = LBound(tablo, 1) To UBound(tablo, 1) - 1
        'syntaxe pour le tri de données type Texte
            If tablo(j, indexColTri) > tablo(j + 1, indexColTri) Then
                For y = 1 To UBound(tablo, 2)
                    t = tablo(j, y)
                    tablo(j, y) = tablo(j + 1, y)
                    tablo(j + 1, y) = t
                Next y
            End If
        Next j
    Next i
  
'    With Sheets("Feuil1") 'on copie le résultat dans la feuille1
'        .Range("A1").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
'    End With
  
    'puis remettre sous la forme initiale
    For i = LBound(tablo, 1) To UBound(tablo, 1) 'on met la colonne A sous la forme XX-xx
        gauche = Split(tablo(i, 1), "-")(0)
        droite = Split(tablo(i, 1), "-")(1)
        If droite = "00" Then
            tablo(i, 1) = Format(gauche, "0")
        Else
            tablo(i, 1) = format(gauche ,"0") & "-" & Format(droite, "0")
        End If
    Next i
  
    With Sheets("Base de donnee") 'on copie le résultat dans la feuille1
        .Range("A3").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
    End With
  
End With
      
End Sub
 

Myst

XLDnaute Occasionnel
Re
Merci pour toutes les solutions, effectivement je vais faire ça, garder le formulaire lié a la colonne "J" pour seulement modifier une ligne sélectionner et modifier le formulaire "SOMMAIRE" pour créer une ligne supplémentaire d'action ou cause
j'ai apporté quelques modification a l'ordre d'apparition des différents textbox, peux tu me dire ce que tu en pense .
Je n'est rien finalisé, c'est juste pour avoir ton ressenti
 

Pièces jointes

  • essai.xlsm
    104.6 KB · Affichages: 23

vgendron

XLDnaute Barbatruc
alors.. me revoici avec une version 8
le formulaire "FICHE" pour créer une fiche, n'a pas bougé --> te permet de créer un nouveau pb avec autant de causes et action que tu souhaites - mais de manière "unitaire" --> un clic= une nouvelle ligne
le formulaire "MODIF_FICHE" qui se lance sur la colonne J ---> Ne sert plus qu'à MODIFIER la ligne cliquée..

le formulaire "APERCU" se lance avec le bouton 'Ajout Cause/Action" (anciennement commandbutton4)
ce formulaire a subit quelques modifications:
1) j'ai ajouté des texbox comme toi pour en avoir 10
2) le N°Fiche est devenu un ComboBox qui se remplit uniquement avec les Numéros de tete des pb
cad: ne contient que les numéros entiers (SANS Tiret)
3) lorsque tu sélectionnes un pb (ex le 40), le code va chercher dans la table de donnée, TOUTES les lignes qui concernent ce pb (= avec ou sans tiret)
4) si il y a moins de 10 lignes: ca remplit les textbox visibles sur le formulaire
si il y a PLUS de 10 lignes (ex le problème 53), ca te remplit les 10 premières lignes ET
tu as un petit curseur (double flèche) pour afficher les suivants.

5) le combobox a pour interet de pouvoir saisir un numéro qui n'EST PAS dans la liste
--> c'est comme ca qu'on va pouvoir identifier un Nouveau PB
--> et donc tu gardes la possibilité de saisir 10 causes et actions en une seule fois (contrairement à toute à l'heure avec la saisie "unitaire"

6) si tu rappelles un problème existant, on va aussi pouvoir AJOUTER des causes et actions..

7) sur le Formulaire "APERCU", les labels Cause 1 2 3...Actions 1 2 3... peuvent porter à confusion puisqu'en fait on remplit tout dans l'ordre des lignes
ex: pb 53
dans la boite labelisée "Cause2", c'est toujours la Cause 1 mais avec l'action2....
 

Pièces jointes

  • Nouvelle Structure 8.xlsm
    127.1 KB · Affichages: 43

Myst

XLDnaute Occasionnel
Re
Si j'aime, c'est topissime
Je n'arrive pas a ajouter des causes ou action a partir du formulaire "APERCU" sa bug sur le code ci-dessous
VB:
Private Sub CommandButton1_Click() 'Bouton Valider
Incrément = 0
'copier les donnees dans la feuille ( Base de donnee uniquement si il y a une action associée (colonne F) )
With Sheets("Base de donnee")
    For i = 1 To 10
        If Me.Controls("TBAP" & i).Value <> "" Then
            num = .Range("A" & .Rows.Count).End(xlUp).Row + 1
            .Range("A" & num).Value = TBFicheNum.Value + Incrément 'revoir cette partie en faisant appel à la fonction ChercheMax
            Incrément = Incrément + 0.1
            .Range("B" & num).Value = TBDateInit.Value
            .Range("C" & num).Value = CBTheme.Value
            .Range("D" & num).Value = TBPb.Value
            .Range("E" & num).Value = Me.Controls("TBC" & i).Value
            .Range("F" & num).Value = Me.Controls("TBAP" & i).Value
            .Range("G" & num).Value = Me.Controls("CBPilote") & i.Value
            .Range("H" & num).Value = Me.Controls("TBDatePrevue" & i).Value
            .Range("I" & num).Value = Me.Controls("TBDateReal" & i).Value
            .Range("J" & num).Value = "NON"
        End If
    'End If
    Next i
End With
Unload Me

End Sub
J'ai masqué un "End If et ajouté "Next i" mais cela bug a la ligne ( .Range("A"...)
Je bosse a partir de 2 PC et de l'un a l'autre les réactions sont différentes
Pour le problème de confusion avec les labels Cause 1 2 3...Actions 1 2 3... je suis d'accord avec toi le plus simple étant de les supprimer tout simplement
Sans vouloir abuser pourrais tu m’orienter sur le moyen d’afficher dans une liste ou une feuille tous les problèmes non résolu
Encore un grand merci pour ton expertise
 

vgendron

XLDnaute Barbatruc
Hello,
ca bug à cause de cette ligne
.Range("A" & num).Value = TBFicheNum.Value + Incrément 'revoir cette partie en faisant appel à la fonction ChercheMax

comme indiqué dans le commentaire, il faut revoir car, depuis l'utilisation des tirets -1 -10 -15... l'incrément ne correspond plus.
j'ai travaillé sur le pb hier soir,
je t'envoie la nouvelle version dès que j'ai un moment
je travaille aussi sur la possibilité de créer un nouveau pb (à partir de l'apercu) mais aussi sur la pssibilité de modifer (ajouter) un pb toujours à partir de l'apercu
du coup. ca devrait nous orienter vers une solution pour afficher les pb non résolus (j'ai déjà ma petite idée)
 

vgendron

XLDnaute Barbatruc
Donc.. avec la version 9

dans le USF Apercu (bouton Ajout Cause/Action
1) tu sélectionnes un pb
---> toutes les lignes associées sont mises dans les textbox
2) si tu saisis un nouveau numéro de pb ==> tu as un message, les boites sont vidées
tu peux donc les remplir et valider ==> les nouvelles lignes sont insérées..

souci que j'ai:
si tu sélectionnes un pb existant --> tout est chargé dans les boites
ensuite.. tu pourrais avoir envie de modifier ou ajouter des actions..
au moment de valider.. le code recréer des nouvelles lignes - meme pour celles que tu as juste modifiées...
faut que je trouve comment faire pour que le code reconnaisse une action modifiée d'une nouvelle action..
Mais pour l'instant.. bon appétit ! :)
 

Pièces jointes

  • Nouvelle Structure 9.xlsm
    130.5 KB · Affichages: 28

Myst

XLDnaute Occasionnel
Bonsoir
Je pourrais tester la version 9 sérieusement seulement samedi après-midi, pour le fonctionnement il y a :
-" FICHE" le formulaire qui sert a créer un problème, les causes et actions associées
-" MODIF_FICHE" le formulaire qui sert a modifier une ligne au choix
Il manque seulement l'ajout de cause et ou action ultérieurement si besoin, pour faciliter les choses on peut se servir du formulaire "MODIF_FICHE" avec un choix pour AJOUTER/MODIFIER et garder le formulaire "APERCU" pour visualiser l'ensemble d'un problème, mais si tu trouve la solution pour faire la différence entre une action modifiée d'une nouvelle action pourquoi pas :)
 

Discussions similaires

Statistiques des forums

Discussions
312 214
Messages
2 086 311
Membres
103 175
dernier inscrit
abcc