Appel fonction VBA

Meliodas54 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Afin de simplifier le code de ma macro VBA (excel), j'aimerais remplacer la répétition de plusieurs lignes par une fonction qui fait le même travail. Mais je n'arrive pas à la faire fonctionner: pouvez vous m'aider ?

Voici le code initial :

WDoc.Tables(1).Cell(5, 4).Range.Copy 'copie la valeur dans le presse papier
ws.Select 'bascule vers Excel
ws.Cells(i, c).PasteSpecial (xlPasteValues) 'colle la valeur dans la cellule
ws.Cells(i, c).Value = Replace(ws.Cells(i, c), ":", "") 'Supprime les ":"
ws.Cells(i, c).Value = Trim(ws.Cells(i, c)) 'Supprime les espaces à gauche et à droite de la chaine de caractère
c = c + 1

La fonction pour la remplacer:

Public Sub extraction(table As Integer, ligne As Integer, colonne As Integer)
WDoc.Tables(table).Cell(ligne, colonne).Range.Copy
ws.Select
ws.Cells(i, c).PasteSpecial (xlPasteValues)
ws.Cells(i, c).Value = Replace(ws.Cells(i, c), ":", "")
ws.Cells(i, c).Value = Trim(ws.Cells(i, c))
c = c + 1
End Sub

Mon appel:

extraction 1, 2, 2 ou call extraction (1,2,2)

Merci pour votre aide

1 réponse

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Bonjour,

Pour que cela fonctionne, il te faut une définition de WDoc et ws
dans des variables "Public" sinon elles sont inconnues dans ta fonction.
Avec cela, normalement ton idée devrait fonctionner.
0