Patrick il faut que tu ralentisses ta vitesse de lecture afin de ne pas sauter des messages ou des phrases
Je te l’ai dit que c’est pas ok
Si c’était vraiment ok, je ne chercherais plus
Patrick il faut que tu ralentisses ta vitesse de lecture afin de ne pas sauter des messages ou des phrases
Je te l’ai dit que c’est pas ok
Si c’était vraiment ok, je ne chercherais plus
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
Re à tous,
@Patrick : presque bonne nouvelle - j’ai bien fait de mettre mon collègue au défi, car il m’a trouvé une formule non matricielle permettant de faire le RTRIM.
Et ça à l’air tellement simple, on se demande pourquoi on y a pas pensé …
Pour l’instant pas trop le temps, je fais les tests dès que je peux, au pire, ce soir …
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
re
ben écoute chez moi 2007 et 2013 32 bits ca fonctionne j'ai bien vérifié que ca faisait pas autre chose en plus au cas ou et non ca Rtrim bien et le dernier ".address' doit rester comme tel
j'ai bien testé en étant sur une autre feuille et tout et tout
je suis impatient de voir la formule non matricielle
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
re
demo
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 à tous,
Patrick, Eric, mercatog, Vba14
Commençons par l'explication de LA FORMULE en non matricielle (grand merci à mon collègue pour le petit défi - 45 mn ) :
Exemple de texte lambda pour tester : " gsqfjy kdfg jhzfvcki mdq ssqsf " => EDIT : le post efface les espaces je l'ai remplace ici par des tirets : "----gsqfjy--kdfg-jhzfvcki-mdq---ssqsf---------"
gsqfjy kdfg jhzfvcki mdq ssqsf 46 NBCAR(A1) => au départ nb de lettres gsqfjy kdfg jhzfvcki mdq ssqsf SUPPRESPACE(A1) Supprime tous les espaces en trop f DROITE(A3;1) on prend la dernière lettre - ici le "f" 4 NBCAR(A1)-NBCAR(SUBSTITUE(A1;A4;"")) on supp tous les "f" pour en connaître le nombre gsqfjy kdfg jhzfvcki mdq ssqs| SUBSTITUE(A1;A4;"|";A5) on remplace dernier "f" en 4è position par un caractère spécial 37 TROUVE("|";A6;1) on cherche la position du caractère spécial gsqfjy kdfg jhzfvcki mdq ssqsf GAUCHE(A1;A7) on récupère le texte par la gauche grâce à la position du caractère spécial trouvé gsqfjy kdfg jhzfvcki mdq ssqsf 37 NBCAR(A10) => Résultat final sans les escpaces de fin gsqfjy kdfg jhzfvcki mdq ssqsf FORMULE => GAUCHE(A1;TROUVE("|";SUBSTITUE(A1;DROITE(SUPPRESPACE(A1);1);"|";NBCAR(A1)-NBCAR(SUBSTITUE(A1;DROITE(SUPPRESPACE(A1);1);"")));1))
Donc pour que cela marche pour Excel Mac 2011 et office 365 Mac (on a que des Adr (merci mercatog )) :
Dit Patrick il existe bien ce signe sur PC : §
Code : Sélectionner tout - Visualiser dans une fenêtre à part If RT Then .Value = Evaluate("IF(ISTEXT(" & Adr & "),LEFT(" & Adr & ",FIND(""§"",SUBSTITUTE(" & Adr & ",RIGHT(TRIM(" & Adr & "),1),""§"",LEN(" & Adr & ")-LEN(SUBSTITUTE(" & Adr & ",RIGHT(TRIM(" & Adr & "),1),""""))),1))," & Adr & ")")
NB : à la fin de la formule je n'ai laissé que " & Adr & " et non REPT(" & Adr & ",1) afin que cela puisse marcher sur Mac correctement - je suppose que sur PC c'es OK aussi ???
Qu'en est il alors sur PC et quel sont les version testés ??? svp
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
Bonsoir à tous,
Vous n'avez pas le cerveau qui fume après tout ça
Chapeau bas messieurs ! il va falloir que je reprenne cette discussion depuis le début pour essayer de comprendre toute votre intelligence... Je vous avoue que j'ai décroché il y a longtemps.
Franchement, je ne sais pas où vous allez chercher tout ça
Merci beaucoup pour vos participations, j'espère que tout ce travail ne restera pas sans utilité, pour ma part je vais bien le conserver au chaud.
Allez les gars, reposez-vous un peu, vous devez en avoir besoin.
Amicalement
René
Le savoir est le plus intellectuel des virus, dommage qu'il ne soit pas très contagieux.
Adrien Verschaere
Étudiant, France, 1997
re
test effectué 2007 2013 ta nouvelle formule semble fonctionner
la compil'
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 Function ChangeAllCellpropertiesInRange(ByRef RnG As Range, prop As String) Dim R As Variant, Addr With RnG Addr = "'" & .Parent.Name & "'!" & .Address Select Case UCase(prop) 'formule non matricielles Case "LOWER", "UPPER", "PROPER", "APPTRIM": prop = Replace(UCase(prop), "APPTRIM", "TRIM") R = Evaluate("IF(ISTEXT(" & Addr & ")," & UCase(prop) & "(" & Addr & "),REPT(" & Addr & ",1))") 'formules matricielle Case "LTRIM": R = Evaluate("IF(ISTEXT(" & Addr & "),MID(" & Addr & ",FIND(MID(TRIM(" & Addr & "),1,2)," & Addr & ",1),LEN(" & Addr & ")),REPT(" & Addr & ",1))") 'ancienne formule RTRIM qui fonctionne 'Case "RTRIM": R = Evaluate("IF(ISTEXT(" & Addr & "),LEFT(" & Addr & ",FIND(""^^"",SUBSTITUTE(" & Addr & ",RIGHT(TRIM(" & Addr & "),1),""^^"",LEN(" & Addr & ")-LEN(SUBSTITUTE(" & Addr & ",RIGHT(TRIM(" & Addr & "),1),""""))))),REPT(" & .Address & ",1))") 'nouvelle formule Case "RTRIM": R = Evaluate("IF(ISTEXT(" & Addr & "),LEFT(" & Addr & ",FIND(""§"",SUBSTITUTE(" & Addr & ",RIGHT(TRIM(" & Addr & "),1),""§"",LEN(" & Addr & ")-LEN(SUBSTITUTE(" & Addr & ",RIGHT(TRIM(" & Addr & "),1),""""))),1))," & Addr & ")") Case "TRIM": .Value = Evaluate("IF(ISTEXT(" & Addr & "),MID(" & Addr & ",FIND(MID(TRIM(" & Addr & "),1,2)," & Addr & ",1),LEN(" & Addr & ")),REPT(" & Addr & ",1))") R = Evaluate("IF(ISTEXT(" & Addr & "),MID(" & Addr & ",1,FIND(TRIM(RIGHT(SUBSTITUTE(TRIM(" & Addr & "), "" "", REPT("" "", 100)), 100))," & Addr & ",1)+LEN(TRIM(RIGHT(SUBSTITUTE(TRIM(" & Addr & "), "" "", REPT("" "", 100)), 100)))-1),REPT(" & Addr & ",1))") End Select End With ChangeAllCellpropertiesInRange = R End Functiontu te régale avec ca toi hein
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub test() Dim DL, RnG As Range With Sheets(1) DL = .Cells(Rows.Count, 3).End(xlUp).Row Set RnG = .Range("C2:C" & DL) 'RnG.Parent.Activate RnG.Value = ChangeAllCellpropertiesInRange(RnG, "RTRIM") 'majuscule ou minuscule l'argument de propertie peu importe!!! End With End Sub
pour le caractère spécial il me semble que oui
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
re
ben non je serais le premier a l'utiliserMerci beaucoup pour vos participations, j'espère que tout ce travail ne restera pas sans utilité, pour ma part je vais bien le conserver au chaud.
combien de discussion sur le sujet des espaces intempestif (ou pas) il y a eu j'en ai vu quelques une
je dois reconnaitre que ce genre d'exercice me plait beaucoup non pas pour réinventé la roue mais l'exercice lui même est intéressant
en tout cas bravo a ryu lui c'est les formules moi c'est VB(A)
ryu si le cœur t'en dit
tu pourrais chercher le moyen de faire le trim en une seule etape
la se serait l'apothéose
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Case "TRIM": .Value = Evaluate("IF(ISTEXT(" & Addr & "),MID(" & Addr & ",FIND(MID(TRIM(" & Addr & "),1,2)," & Addr & ",1),LEN(" & Addr & ")),REPT(" & Addr & ",1))") R = Evaluate("IF(ISTEXT(" & Addr & "),MID(" & Addr & ",1,FIND(TRIM(RIGHT(SUBSTITUTE(TRIM(" & Addr & "), "" "", REPT("" "", 100)), 100))," & Addr & ",1)+LEN(TRIM(RIGHT(SUBSTITUTE(TRIM(" & Addr & "), "" "", REPT("" "", 100)), 100)))-1),REPT(" & Addr & ",1))")
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
j'ai pas fini d'arranger mon code, mais si tu mets LTRIM (LT) et RT (RTRIM) à True, tu as le TRIM :
Function ModifyTxtProperties(ByRef Rng As Range, Optional Param As Variant = Empty, Optional LT As Boolean, Optional RT As Boolean, Optional CarSpe As Variant = Empty, Optional SuppCarSpe As Variant = Empty)
--------------------------------------> RANGE ||| ---> ("TRIM", "UPPER", "LOWER", "PROPER") ||| ------> LTRIM ||| -----> RTRIM ||| -----> REMPLACER ANCIEN CARATERES (SPECIAUX) ||| -----> PAR LES NOUVEAUX CARACTERES
j'ai pas envie d'avoir une formule interminale …
Mais bon c'est simple tu commence par la manip/formule du LTrim pour ensuite faire le reste avec la formule du RTrim
Alors oui dans mon code tu as qq options mais cela permet de mixer les modifications à faire …
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
Bonjour,
il est malin comme un singe ton collègue ;-)
eric
Éric,
Il es est surtout habitué aux formules, mais pas du tout à vba.
@Patrick
Ben alors Patrick, j’ai qd même proposé vba + formulesen tout cas bravo a ryu lui c'est les formules moi c'est VB(A)
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
re
si tu veux
je parlais de VBA pur 'index,transpose,join,rtrim et le clou regex et toujours sans boucle et sans formule
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
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