VBA - trouver la version la plus récente d'un projet

Résolu/Fermé
KeyserSoze84 Messages postés 3 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 5 novembre 2022 - 5 nov. 2022 à 11:17
KeyserSoze84 Messages postés 3 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 5 novembre 2022 - 5 nov. 2022 à 14:38

Bonjour à tous,
Je cherche une solution en VBA à mon problème.
J'ai une colonne "B" dans un tableau avec une liste de projets aléatoires :
456/45
337/345
234/456
89/345
456/56
Le nombre de caractères n'est pas forcément le même et la façon dont sont écrits les projets n'a pas vraiment de règle.
J'ai créé un formulaire permettant de modifier un projet et ce projet peut-être modifié plusieurs fois.
J'ai besoin d'utiliser à chaque fois la dernière modification du projet pour le modifier à nouveau.
Je pensais donc si je souhaite modifier le projet 234/456 créer le nouveau projet 234/456#1. Si je souhaite modifier à nouveau 234/456#2, etc...
Ma nouvelle liste serait donc par exemple :
456/45
337/345
234/456
89/345
456/58
234/456#1
28/345
378/567
234/456#2
457/345
Ce que je cherche donc est que si je souhaite modifier le projet 456/58, comme il n'y a pas de modification, celui-ci prendrai la valeur 456/58#1
Par contre si il y a déjà eu plusieurs modifications et que la dernière valeur est 456/58#4 ma modification va prendre la valeur 456/58#5.
Deuxième problème :
Je vais me retrouver avec une liste de ce type :
456/45
337/345
234/456
89/345
456/58
234/456#1
28/345
378/567
234/456#2
457/345
234/456#3
456/45#1
89/345#1
89/654
89/345#2
337/345#1
478/643
337/345#2
459/564
337/345#3
Mon but est d'extraire les dernières versions des projets :
456/58
28/345
378/567
457/345
234/456#3
456/45#1
89/654
89/345#2
478/643
459/564
337/345#3
Attention, la valeur après le # peut prendre 2 caractères !
J'ai essayé avec les fonctions InStr, Len, Right mais c'est un vrai casse-tête.
Peut-être qu'il existe une fonction simple sur laquelle je serai passé à côté ?
Je souhaite éviter la fonction Max Si Ens pour des problèmes de compatibilité.
Je vous remercie par avance pour votre aide.
Rémi.

2 réponses

KeyserSoze84 Messages postés 3 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 5 novembre 2022
Modifié le 5 nov. 2022 à 12:02

J'avais tenté quelque chose :

Sur Feuille Excel à partir de A1 :

438/458
438/458
448/567
448/567#2
448/567#30
448/567#4
448/567#15
448/567#6
448/567#7
448/567#8
448/567#9
448/567#10
448/567#11
448/567#12

Je tente de récupérer la modification la plus récente (448/567#30).

La première procédure affiche bien les valeurs après "#".
Par contre, la deuxième ne me donne pas la valeur max après "#".
J'ai raté quelque chose ?

Sub Test1()

'Fonctionne

Ma_Valeur = "448/567"

For i = 1 To 14

    If Left(Range("A" & i), Len(Ma_Valeur)) = Ma_Valeur Then
        If InStr(1, Range("A" & i), "#") > 0 Then
            MsgBox Right(Range("A" & i), Len(Range("A" & i)) - InStr(1, Range("A" & i), "#"))
        End If
    End If

Next

End Sub

Sub Test2()

'Ne fonctionne pas !!!

Ma_Valeur = "448/567"
Numero = 0

For i = 1 To 14

    If Left(Range("A" & i), Len(Ma_Valeur)) = Ma_Valeur Then
        If InStr(1, Range("A" & i), "#") > 0 Then
            If Right(Range("A" & i), Len(Range("A" & i)) - InStr(1, Range("A" & i), "#")) > Numero Then
                Numero = Right(Range("A" & i), Len(Range("A" & i)) - InStr(1, Range("A" & i), "#"))
                MsgBox Numero
            End If
        End If
    End If
Next

End Sub

0
KeyserSoze84 Messages postés 3 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 5 novembre 2022
Modifié le 5 nov. 2022 à 14:44

Je viens de trouver une solution toute simple à mon problème !

Je n'ai finalement pas mis de numéro #1, #2, #3, etc...

Mes dossiers comportent une date d'enregistrement. Il suffisait donc de les classer du plus récent au plus ancien.

Ensuite, supprimer les doublons en filtrant sur la case des dossiers permet de ne garder que les dernières versions.

Le truc à ne pas oublier est qu'Excel supprime les doublons de haut en bas. Il faut donc bien filtrer dans le bon ordre.

Merci quand même !

0