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
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.