Objet requis, mais pourquoi ?

  • Initiateur de la discussion carriere
  • Date de début
C

carriere

Guest
BOnjour à tous


Voici un code qui sert à supprimer les parenthèses de toutes les cellules spécifiées dans la procédure Com.
J'ai une erreur "objet requis" mais je ne sais pas ou ni pourquoi qui se situe normalement dans la procédure Com()?

(la première fonction est correcte, c'est pas la peine de la tester).
Merci à vous :)






Function ExtractElement(Txt, n, Separator) As String
' Returns the nth element of a text string, where the
' elements
' are separated by a specified separator character

Dim Txt1 As String, temperament As String
Dim ElementCount As Integer, i As Integer
Dim TempElement As String

Txt1 = Txt
' If space separator, remove excess spaces
If Separator = Chr(32) Then Txt1 = Application.Trim(Txt1)

' Add a separator to the end of the string
If Right(Txt1, Len(Txt1)) <> Separator Then _
Txt1 = Txt1 & Separator

' Initialize
ElementCount = 0
TempElement = ""

' Extract each element
For i = 1 To Len(Txt1)
If Mid(Txt1, i, 1) = Separator Then
ElementCount = ElementCount + 1
If ElementCount = n Then
' Found it, so exit
ExtractElement = TempElement
Exit Function
Else
TempElement = ""
End If
Else
TempElement = TempElement & Mid(Txt1, i, 1)
End If
Next i
ExtractElement = ""
End Function



Sub Com()

Dim lg As Variant

For Var = 1 To 10000
For cpt = 1 To 500

lg = Len(Cells(Var, 11))
chaine = WorsheetFunction.ExtractElement(Cells(Var, 11).Value, cpt, "(")
ch = chaine & Right(Cells(Var, 11), lg - 1)
Cells(Var, 12).Value = ch

Next cpt
Next Var

End Sub
 
C

carriere

Guest
Merci Arnaud. Tu as bien vu la coquille.Mais en corrigeant j'ai un message du type : " propriété ou méthode non gérée par cette objet"

Donc je sèche malheuresement toujours...

Merci d'avance
 
A

Arnaud

Guest
re,

quand tu utilise une fonction qui provient des fonction utilisable sous excel mais ici en VBA, il faut que celle ci soit la version anglaise de la fonction si je ne me trompe.
pour savoir son nom, utilise l'enregistreur de macro et insère cette fontion dans une cellule, en vba cela sera retranscrit avec le nom anglais.
 
J

Jean-Marie

Guest
Bonjour
Sub Com()

Dim lg As Variant
Dim Var, cpt As Long
Dim chaine, ch As String

For Var = 1 To Cells(65536,11).end(xlUp).row
lg = Len(Cells(Var, 1))
For cpt = 1 To lg

lg = Len(Cells(Var, 1))
chaine = ExtractElement(Cells(Var, 11).Value, cpt, "(")
ch = chaine & Right(Cells(Var, 11), lg - 1)
Cells(Var, 12).Value = ch

Next cpt
Next Var

End Sub

@+Jean-Marie
 
@

@+Thierry

Guest
Bonjour Arnaud, Jean-Marie, JC, le Forum

Et bien Arnaud, trop anisette à l'apéro ?

Lis le post de JC à 13:23, tu verras d'où elle vient cette fonction !! (remarque qu'à 13:23 l'apéro était déjà passé !!)

Et bravo à Jean-Marie dans sa reconversion


Bon Aprèm
@+Thierry
 
@

@+Thierry

Guest
C'est re-moi

Juste un ch'ti détail le Lg n'est pas Variant, mais juste Byte (ou Integer si plus de 255 caractères)

Et aussi il me semble que la première initialisation de Lg est suffisante, je ne vois pas trop l'utilité de la re-initiliser dans la boucle à chaque passage, mais peut-être comme hier quelque chose m'échappe...

Bon Aprèm
@+Thierry
 
A

Arnaud

Guest
re,

a OK LOL :).
et bien effectivement ma réponse voulais rien dire du tout ^^.
je survole un peu trop vite les question.....

ps: en tout cas j'ai eu du mal a le trouver le post de JC à 13:23..........ben ouai, en nom d'auteur il a mis 'carriere' donc moi comme un gros malin je chercher dans tout les post du forum un post qui pouvais avoir un rapport avec comme auteur JC ^^.
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz