Cela dépend du PC dont je dispose; parmi la foultitude de gratuits : LICEcap …
Sinon pour des présentations avec du son (voix off) : Camtasia (MAC) ou Camtasia Studio (PC) …
Cela dépend du PC dont je dispose; parmi la foultitude de gratuits : LICEcap …
Sinon pour des présentations avec du son (voix off) : Camtasia (MAC) ou Camtasia Studio (PC) …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Merci je vais regarder
en attendant ta réponse j'ai trouvé screentogif mais il me semble lourd a l'exécution mais fonctionne très bien
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
alors la respect entre licecap et screentogif il y a un monde
licecap et beaucoup plus simple et surtout moins lourd a l'exécution
par contre c'est vrai il manque tout les outils qu'il y a sur screentogif
nickel je garde
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Pour titiller Patrick, autrement et sans vrai apport
Le marteau pour tuer la mouche mais pour chercher les valeurs consécutives identiques (à toute fin utile)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Function LeMin(ByVal Rng As Range, ByVal NbOcc As Long)Dim Rg As Object, A As Object, B As Object Dim Res As Double, Mn As Double Dim Tmp As String, S As String S = Space(2) Res = Application.Max(Rng) Mn = Application.Min(Rng) Tmp = S & Join(Application.Transpose(Rng), S) & S Set Rg = CreateObject("vbscript.regexp") With Rg .Global = True .Pattern = "(\D\d+\D)\1{" & NbOcc - 1 & ",}" If .Test(Tmp) Then Set A = .Execute(Tmp) For Each B In A Res = Application.Min(Split(B.Value)(1), Res) If Res = Mn Then Exit For Next B LeMin = Res End If End With Set Rg = Nothing End Function
Cordialement.
J'utilise toujours le point comme séparateur décimal dans mes tests.
re
Bonjour Mercatog
a ben moi qui avais honte de sortir mon outils de fainéant a chaque fois(dictionary)
la je crois que tu m'a battu
cela dit c'est bien tordu comme j'aime surtout que j'aime bien faire joujou avec un regex
une seule chose que je comprends pas c'est le pattern
pour le pattern ca donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sub test() MsgBox LeMin(Range("A1:A25"), 3) End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part .Pattern = "(\D\d+\D)\1{" & NbOcc - 1 & ",}"
j'ignorais que l'opérande était possible dans le regex comme ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part .Pattern = "(\D\d+\D)\1{2}"
bon malgré l'inutilité d'une tel mécanique pour faire ce que l'on a besoins ca me plait beaucoup
confirme moi que ce qui est en rouge veut bien dire
ou
1 représente 1 fois l'ensemble qu' il précède et bien évidement le 2 entre les accolades sont le nombre de répétition demandées
j'ai bien compris ??? car j'ai des doutes1 fois le même nombre répété 2 fois
le "(\D\d+\D)" pourrait être n'importe quel nombre
sinon juste pour le sport!!
je ré utilise le regex pour les matches comme j'ai souvent l'habitude de le faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Sub test() MsgBox LeMin(Range("A1:A25"), 3) End Sub Function LeMin(ByVal Rng As Range, ByVal NbOcc As Long) Dim Rg As Object, A As Object, B As Object, z As String Dim Res As Double, Mn As Double Dim Tmp As String, S As String S = Space(2) Res = Application.Max(Rng) Mn = Application.Min(Rng) Tmp = S & Join(Application.Transpose(Rng), S) & S MsgBox Tmp Set Rg = CreateObject("vbscript.regexp") With Rg .Global = True .Pattern = "(\D\d+\D)\1{" & NbOcc - 1 & ",}" 'equivalent en dur .Pattern = "(\D\d+\D)\1{2}" If .test(Tmp) Then Set A = .Execute(Tmp) .Pattern = "(\D\d+\D)" For Each B In A z = .Execute(B)(0) Debug.Print "triplet = " & z Res = Application.Min(z, Res) If Res = Mn Then Exit For Next B LeMin = Res End If End With
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Patrick bonjour
Regarde le point III-C-6. Références du Tuto de Cafeine sur les Regexp
Ce que j'ai compris: Le groupe 1 (càd celui entre parenthèse) est répété au moins 2 autres fois
Code : Sélectionner tout - Visualiser dans une fenêtre à part "(\D\d+\D)\1{2,}"
J'aurais pu faire aussi
Code : Sélectionner tout - Visualiser dans une fenêtre à part "(\s\d+\s)\1{2,}"
Cordialement.
J'utilise toujours le point comme séparateur décimal dans mes tests.
Bonjour,
bien vu mercatog !
Tu peux éventuellement éviter le Split dupuisque tu as les SubMatches de B à ta disposition :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Res = Application.Min(Split(B.Value)(1))Tu peux également légèrement simplifier le pattern à condition d'utiliser une seule espace :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Res = Application.Min(B.SubMatches(0), Res)
et sortir directement de la fonction après ton test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Tmp = Join(Application.Transpose(Rng), " ") & " " '... .Pattern = "(\d+\s)\1{" & NbOcc - 1 & ",}"Mais là c'est du chipotage...
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Res = Mn Then
A+
Bonjour davido84,
Pour le pattern, c'est ce que j'avais au départ fais, mais prend en compte des situations non voulues
Exemple d'une liste
25, 5, 5, 1
Il prend bien le 5 comme répété 3 fois
Cordialement.
J'utilise toujours le point comme séparateur décimal dans mes tests.
Exact !
Comme quoi je n'aurais pas dû me contenter de ne tester que l'exemple indiqué...
A+
Je suis sûr que tu vas proposer un pattern plus joli davido84.
Cordialement.
J'utilise toujours le point comme séparateur décimal dans mes tests.
Désolé mais pour l'instant je n'ai pas mieux !
Si une idée me vient je te fais signe !
David
je ne voudrais pas casser l'ambiance et la fièvre créative de chacun
mais voudrais rappeler que l'auteur du post n'a pas montré ni le bout de son nez ni aucun remercîment au participants
en effet tieumav est intervenu dans le post 3 et depuis plus rien
je trouve très énervant personnellement. encore un dans ma liste noire
pour le coup moi aussi je cherche un joli pattern
ah!!! au fait
@Mercatog
a quoi sert la virgule dans ton pattern ??, ca fonctionne très bien sans
re
Code : Sélectionner tout - Visualiser dans une fenêtre à part .Pattern = "(\D\d+\D)\1{" & NbOcc - 1 & ",}"
@Mercatog
je viens de m'apercevoir aussi que rept fonctionne très bien malgré ton exemple 1,222,22
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Sub test2() MsgBox LeMin(Range("A1:A20")) End Sub Function LeMin(ByVal Rng As Range) Dim Tmp As String, S As String Dim Mn As Long Mn = Application.Max(Rng) Tmp = Join(Application.Transpose(Rng), ",") Debug.Print "Tmp= " & Tmp For i = 1 To Rng.Rows.Count If InStr(Tmp, Application.Rept(Rng.Cells(i) & ",", 3)) Then Mn = IIf(Rng.Cells(i) < Mn, Rng.Cells(i), Mn) Next Debug.Print "le plus petit est! " & Mn LeMin = Mn End Function
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Patrick
Sans la virgule: Exactement 3 occurrences
Avec la virgule: Au moins 3 occurrences
Avec le Rept, tu as ajouté la virgule c'est pour ça.
Autre chose?
Cordialement.
J'utilise toujours le point comme séparateur décimal dans mes tests.
non ca va
je cherche toujours un pattern mais le tiens a définitivement clos les possibilités de meilleure écriture
ok pour la nuance de la virgule (compris)
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Bonjour,
on peut éventuellement modifier le pattern pour ramener directement dans A la valeur unique et non la suite de valeurs qui se répètent :
et donc traiter directement la valeur capturée à la place de l'utilisation d'un autre pattern, d'un split ou d'un SubMatches :
Code : Sélectionner tout - Visualiser dans une fenêtre à part .Pattern = "(\s\d+\s)(?=\1{" & NbOcc - 1 & "})"
On peut même ne pas utiliser B puisque cette valeur unique est la valeur de A :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 For Each B In A Res = Application.Min(B.Value, Res) If Res = Mn Then LeMin = Res: Exit Function Next B
mais cela nous oblige à abandonner la boucle For...Each donc peut-être pas intéressant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 For i = 0 To A.Count - 1 Res = Application.Min(A(i).Value, Res) If Res = Mn Then LeMin = Res: Exit Function Next i
Inconvénient de la méthode : cela peut engendrer plus de valeurs à traiter si une suite de même valeur se répète au-delà du nombre d'occurrences indiqués dans le 2ème argument de la fonction...
A+
Bonjour,
pour éviter le petit inconvénient relevé à la fin de mon message précédent :
Par rapport à la proposition de mercatog on se retrouve avec un pattern plus complexe mais une extraction des correspondances plus directe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part .Pattern = "(\s\d+\s)(?=\1{" & NbOcc - 1 & "}(?!\1))"
Pas sûr que l'on y gagne au change...mais c'est surtout pour explorer le RegExp !
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager