Gérer les points dans une expression
Candy
-
Candy -
Candy -
Bonjour,
J'ai un soucis. Je suis en train d'écrire une macro qui doit ajouter des pièces jointes .PDF dans un mail. Il faut donc que la ou les pièces soient trouvés facilement.
Ma difficulté réside dans le fait que le numéro de facture dans mon tableau, que je peux mettre à jour chaque fois et dans lequel je sélectionne les compagnies auxquels je dois envoyer un mail, est différent de celui sur le serveur.
exemple.
dans mon tableau je peux avoir ceci: Facture 12.13.145.1265 et sur le serveur c'est plutôt Facture 12 13 145 1265 (sans les points). ou encore
dans le tableau: Facture FA15121785 et sur le serveur Facture 15121785.
Je ne sais pas comment gérer ça avec VBA.
J'essaie de chercher sur les forums, mais je ne trouve rien pour le moment. Si vous avez des pistes ca serait cool.
Je vous donne le bout de code sur lequel je travaille
Merci
J'ai un soucis. Je suis en train d'écrire une macro qui doit ajouter des pièces jointes .PDF dans un mail. Il faut donc que la ou les pièces soient trouvés facilement.
Ma difficulté réside dans le fait que le numéro de facture dans mon tableau, que je peux mettre à jour chaque fois et dans lequel je sélectionne les compagnies auxquels je dois envoyer un mail, est différent de celui sur le serveur.
exemple.
dans mon tableau je peux avoir ceci: Facture 12.13.145.1265 et sur le serveur c'est plutôt Facture 12 13 145 1265 (sans les points). ou encore
dans le tableau: Facture FA15121785 et sur le serveur Facture 15121785.
Je ne sais pas comment gérer ça avec VBA.
J'essaie de chercher sur les forums, mais je ne trouve rien pour le moment. Si vous avez des pistes ca serait cool.
Je vous donne le bout de code sur lequel je travaille
'-----------------Pièces jointes------------------------------------------------------------------------------------------------------ p = UD.Cells(Rows.Count, "E").End(xlUp).Row - 2 For l = 2 To p fichierpdf = UD.Range("e" & l).Value Set fso = CreateObject("Scripting.FileSystemObject") Set dossier = fso.GetFolder("S:\bbbbbbb\ACTIVITY\CLIENTS\") z = dossier.SubFolders.Count nomdossier = UCase(UD.Range("A2").Value) Worksheets("Recipients CC").Range("G:K").Clear Set dossiercompany = fso.GetFolder("S:\bbbbbbb\ACTIVITY\CLIENTS\" & nomdossier & "\" & UCase("Invoicing")) Debug.Print dossiercompany ' MsgBox nomdossier For Each sousdossiercompany In dossiercompany.SubFolders m = sousdossiercompany.Name lngrow = lngrow + 1 If IsNumeric(m) And m <> "Trams" Then Worksheets("Recipients CC").Range("G" & lngrow).Value = CInt(m) End If Next sousdossiercompany derlng = Worksheets("Recipients CC").Cells(Rows.Count, "G").End(xlUp).Row If Worksheets("Recipients CC").Range("G" & derlng).Value > Worksheets("Recipients CC").Range("G" & derlng - 1).Value Then ssdossier = CStr(Worksheets("Recipients CC").Range("G" & derlng).Value) End If Dim mesfichiers, t() chemin = dossiercompany & "\" & ssdossier ' racine pour la recherche Debug.Print chemin exT = ".pdf" ' extention de fichiers recherchés argmt1 = fichierpdf ' partie du nom de fichiers recherchés mesfichiers = cherche(chemin, exT, argmt1) ' ||mesfichiers|| deviendra un tableau de nom de fichiers selon les condition précédemment énumérée If UBound(mesfichiers) > 0 Then 'MsgBox Join(mesfichiers, vbCrLf) i = i + 1 UD.Range("M" & i).Value = mesfichiers End If Next l PieceJointe = PieceJointe For u = 2 To UD.Range("M65536").End(xlUp).Row - 1 PieceJointe = PieceJointe & "; " & UD.Range("M" & u).Value Debug.Print PieceJointe Next
Merci
A voir également:
- Gérer les points dans une expression
- Mettre des points sur une carte - Guide
- Gerer les profils netflix - Guide
- Comment insérer des points de suite sur word - Guide
- Comment inserer une video dans un power point - Guide
- Comment gérer les applications qui se lancent au démarrage - Guide
3 réponses
Salut Candy,
Si tu peux compter sur le fait que le format des noms de factures dans le tableau est celui que tu décris, et que tu n'as pas à le vérifier, tu peux utiliser "Replace" comme ceci :
Cela va simplement remplacer "Facture FA" par "Facture " si cet argument recherché s'y trouve (et là où il se trouve), et pareil pour les "." qui sont remplacés par les espaces si des points s'y trouvent (et là où les points se trouvent).
Si tu peux compter sur le fait que le format des noms de factures dans le tableau est celui que tu décris, et que tu n'as pas à le vérifier, tu peux utiliser "Replace" comme ceci :
factNom = Replace(factNom, "Facture FA", "Facture ") factNom = Replace(factNom, ".", " ")
Cela va simplement remplacer "Facture FA" par "Facture " si cet argument recherché s'y trouve (et là où il se trouve), et pareil pour les "." qui sont remplacés par les espaces si des points s'y trouvent (et là où les points se trouvent).
Bonjour Dal,
Merci beaucoup pour ton aide. je vais le faire tout de suite. Je veux profiter de ta gentillesse pour te demander quelque chose d'autre. voila. je dois joindre les factures en question dans un emails. et je peux en avoir plusieurs pour un seul client (compagnie).
j'ai reussi la macro qui me permet d'afficher les chemins d'acces aux differentes factures dans un tableau excel.
je me suis dis que je devais creer une variable concatener ou je concatene le contenu de chaque ligne du tableau avec un ";" pour les separer. et cette variable va me servir de piece à attacher:
exemple
j'aurai donc
concatène= S:\facture\piecejointe.pdf ; S:\facture\piecejointe1.pdf ; S:\facture\piecejointe2.pdf" ; S:\facture\piecejointe3.pdf" ; "S:\facture\piecejointe4.pdf"
mais ca ne marche pas.
c'est pas possible egalement de faire plusieurs attachements.add vu qu'on ne maitrise pas le nombre de pieces à ajouter
Du coup, comment je peux faire?
Merci beaucoup pour ton aide
Merci beaucoup pour ton aide. je vais le faire tout de suite. Je veux profiter de ta gentillesse pour te demander quelque chose d'autre. voila. je dois joindre les factures en question dans un emails. et je peux en avoir plusieurs pour un seul client (compagnie).
j'ai reussi la macro qui me permet d'afficher les chemins d'acces aux differentes factures dans un tableau excel.
je me suis dis que je devais creer une variable concatener ou je concatene le contenu de chaque ligne du tableau avec un ";" pour les separer. et cette variable va me servir de piece à attacher:
exemple
M1 = "S:\facture\piecejointe.pdf" M2 = "S:\facture\piecejointe1.pdf" M3 = "S:\facture\piecejointe2.pdf" M4 = "S:\facture\piecejointe3.pdf" M5 = "S:\facture\piecejointe4.pdf" for i=2 to z concatene=range("M1").value concatene=concatene & ";" & range("M"& i).value next i;
j'aurai donc
concatène= S:\facture\piecejointe.pdf ; S:\facture\piecejointe1.pdf ; S:\facture\piecejointe2.pdf" ; S:\facture\piecejointe3.pdf" ; "S:\facture\piecejointe4.pdf"
mais ca ne marche pas.
c'est pas possible egalement de faire plusieurs attachements.add vu qu'on ne maitrise pas le nombre de pieces à ajouter
Du coup, comment je peux faire?
Merci beaucoup pour ton aide
Tu devrais poser ta nouvelle question dans un nouveau fil de discussion.
Je n'utilise pas Outlook et Excel seulement très occasionnellement.
Cependant, si tu disposes des chemins d'accès aux différentes factures à envoyer dans un tableau VBA, je ne vois pas ce qui t'empêche, pour chacun des chemins d'accès stocké dans un élément du tableau, d'appeler la méthode attachements.add
Par exemple :
Je n'utilise pas Outlook et Excel seulement très occasionnellement.
Cependant, si tu disposes des chemins d'accès aux différentes factures à envoyer dans un tableau VBA, je ne vois pas ce qui t'empêche, pour chacun des chemins d'accès stocké dans un élément du tableau, d'appeler la méthode attachements.add
Par exemple :
Dim mesfichiers(4) As String Dim i As Integer mesfichiers(0) = "Facture 15121785" mesfichiers(1) = "Facture 15121786" mesfichiers(2) = "Facture 15121787" mesfichiers(3) = "Facture 15121788" mesfichiers(4) = "Facture 15121789" ' parcourir les éléments du tableau quels que soient les indices de ' début et de fin du tableau en les déterminant avec LBound() et UBound() For i = LBound(mesfichiers) To UBound(mesfichiers) ' mettre à la place l'appel à attachements.add MsgBox mesfichiers(i) Next i
que tu pourras appeler sur chaque nom
par exemple :
affichera successivement : "Facture 15121785" puis ""Facture 12 13 145 1265"