VBA - Utiliser la fonction Replace + "*" dans un Array

Bonjour,

Savez-vous s'il est possible d'utiliser la fonction Replace() à l'intérieur d'un Array, en utilisant le caractère * pour rechercher des informations qui peuvent varier.

Par exemple:

Dans mon Array, je vais avoir, pas exemple aa((1,a)) =[+]ID_Image[t] ; j'aurais tendance à vouloir utiliser la fonction replace comme ceci :

x = Replace(aa(1, a), "[*]", "")

Mais Excel ne trouve pas de résultat à remplacer. Et donc x sera = à "[+]ID_Image[t]"

Y a t-il un moyen d'utiliser "*" ?

L'objectif est de retirer tout ce qui se trouve entre crochets.

Je sais le faire en découpant les chaînes de caractères ou en utilisant la fonction split, mais ça n'est pas ce que je recherche car le code serait beaucoup plus complexe à la fin (le nombre de crochets est variable).

Bonne journée !

bonjour, un essai (on peut faire une fonction personnallisée, si nécessaire)

Sub teste()
     s = "xxxxxxx]xxxxxxxxxxxxxxxxxxx1[2xxxxxxxxx3]4xxxxxxxxxxxxxxxxxx1[2xxxxxxxx3]4xxxxxxx[xx"
     Do
          i1 = InStr(1, s, "[", 1)           'premier "["
          i2 = 0
          If i1 > 0 Then
               i2 = InStr(i1, s, "]", 1)     'suivant "]"
               If i2 > 0 Then s = Left(s, i1 - 1) & Mid(s, i2 + 1)     'supprimer "[...]"
          End If
     Loop While i2 > 0
End Sub

Bonsoir,

En effet, en découpant les chaines de caractères, c'est possible. Pas de souci sur ce point-là.

Pour résumer, je constate que si j'écris :

.cells(1,a) = Replace(.cells(1,a), "[*]", "")
Les informations entre crochets sont bien retirées.

Si j'écris :
x = Replace(aa(1, a), "[*]", "")

Alors, aucun changement n'est effectué et x = aa(1, a). Excel ne trouve pas "[*]" dans un Array.

bonjour, est-ce vrai ? cela ne fonctionne pas chez moi (même avec "a" )

Pour résumer, je constate que si j'écris :

.cells(1,a) = Replace(.cells(1,a), "[*]", "")

Eh bien oui, mais justement, je ne veux pas effectuer les modifications sur la feuille, mais sur un tableau.

Ça ne doit pas être possible de cette manière.

allez ??? .

Mais si cela fonctionne, on peut le faire aussi pour un array !

Sub teste()
     Cells(1, "A").Value = "xxxxxxx]xxxxxxxxxxxxxxxxxxx1[2xxxxxxxxx3]4xxxxxxxxxxxxxxxxxx1[2xxxxxxxx3]4xxxxxxx[xx"
     Cells(1, "A").Value = Replace(Cells(1, "A"), "[*]", "")
End Sub

Salut le fil

La fonction Range.Replace ne s'applique qu'aux plages.

La fonction VBA Replace ne fonctionne pas sur les tableaux.

Tu dois passer par la fonction Application.Substitute. Mais cette fonction ne prends pas en Charge les Opérateurs * et ? et, elle est sensible à la Casse.

Peut-être en combinant Substitute et des Split dans une boucle ?

Sinon faire un Joint du Tableau dans une cellule ou variable (si le tableau n'est pas énorme) , supprimer les séquences voulues et recréer le tableau avec un Split.

re, avec quelque part une cellule auxiliaire "Drosophile"

Sub teste()
     Range("A1").Name = "Drosophile"         'quelque part une cellule auxiliaire, n'importe où

     Dim a(10)
     a(1) = "xxxxxxx]xxxxxxxxxxxxxxxxxxx1[2xxxxxxxxx3]4xxxxxxxxxxxxxxxxxx1[2xxxxxxxx3]4xxxxxxx[xx" 'valeur originale
     a(1) = Drosophile(a(1)) 'valeur après supprimer
     MsgBox a(1)
   End Sub

Function Drosophile(s)
     With Range("Drosophile")
          .Value = s
          .Replace "[*]", ""
          Drosophile = .Value
     End With
End Function

Bonsoir,

Merci pour vos réponses !

La fonction Drosophile permet effectivement de contourner le problème de recherche de caractères sur un tableau Array.
Je fonctionne un peu comme ça pour stocker des variables temporaires, donc ça devrait le faire !

Et merci @Jean-Paul pour les explications !

Bonne soirée :)

Rechercher des sujets similaires à "vba utiliser fonction replace array"