Je suis totalement nouveau ici.
Et un peu d'aide serait la bienvenue!
Voici mon problème:
Dans un grand nombre de cellules excel, je souhaite supprimer tous les éléments situés entre le dernier le symbole "+" (il peut y en avoir de 1 à 10) et le symbole "(" (il ne peut y en avoir qu'un).
C'est à dire que le nombre de symboles "+" varie suivant les cellules.
Exemple 1:
Cellule avant modification: brown+impediments to integrated urban stormwater management: the need for institutional reform (2005)
Cellule après modification: brown+(2005)
Exemple 2:
Cellule avant modification: berkhout+hanegraaff+braun+is the eu different? comparing the diversity of national and eulevel systems of interest organisations (2017)
Cellule après modification: berkhout+hanegraaff+braun+(2017)
Public Function Extr(ByVal x) As String
Dim n&, m&
n = InStrRev(x, "+"): m = InStrRev(x, "(")
If n >= 0 And m > n Then Extr = Left(x, n) & Mid(x, m)
End Function
Bonjour
Je vais en ce qui me concerne te mettre en mesure de le faire toi-même, sur ces bases
La fonction Instrrev de VBA te permet d'obtenir la position pos1 du dernier "+"
La fonction Instr de vba te permet d'obtenir la position pos2 du "("
La fonction Mid de VBA te permet d'obtenir la chaine de caractères commençant en Pos1 et d'une longueur égale à Pos2 - Pos1
Je ne reviendrai en cas de besoin, que si tu montres ce que tu as au moins tenté sur la base de ces indications.
Bonjour à vous deux,
Et merci pour votre retour rapide et efficace pour cette première question!
Suivant les conseils de jmfmarques, j'étais en train de m'initier à VBA - langage complètement nouveau pour moi. Voilà où j'en étais (pas très loin donc - et sûrement pas sur le bon chemin).
InStrRev("+", "A2") = pos1
InStr(1, "(", "A2") = pos2
Mid(A2, "pos1", ["pos2"-"pos1"]) = asupprimer
Dim pos1 As Integer
Dim pos2 As Integer
Dim asupprimer As String
Quand j'ai testé la formule de job75 qui donne le résultat escompté. job75 pourrais-je vous demander d'expliquer l'articulation des différentes formules? (Que je puisse apprendre par moi-même)?
Un grand merci à vous deux, donc!
Tout complètement d'information est le bienvenu!
Hé !
ce n'est pas ainsi :
InStrRev("+", "A2") = pos1
que l'on affecte une valeur à une variable (ici pos1),
mais ainsi :
pos1 = InStrRev("+", "A2")
(idem pour les autres)
Public Function Extr(ByVal x) As String
Dim n&, m&
n = InStrRev(x, "+"): m = InStrRev(x, "(")
If n >= 0 And m > n Then Extr = Left(x, n) & Mid(x, m)
End Function