Office 365 Annuler le saut à la ligne automatique

tolga7

XLDnaute Nouveau
Bonjour,

J'ai un petit problème avec VBA, j'ai trouvé un code qui extrait les donnés d'un fichier texte dans excel pour ensuite les envoyer par mail.
Le problème c'est que quand j'extrait le texte du .txt a chaque virgule j'ai un saut a la ligne et le reste du teste se retrouve dans la cellule du dessous alors que je veux seulement représenter une virgule.
En gros je veux tout mettre dans une cellule au lieu qu'a chaque virgule je passe a la cellule du dessous.
Je vous met mon code ci dessous.
Merci d'avance,

Tolga

VB:
Sub Profile1()

Dim Nom_Fichier As String, Texte As Variant
Dim NumFile As Integer, Compteur As Integer
Dim Send_Email As Worksheet

If ActiveSheet.Range("I4") = "" Then
   MsgBox "Fill Profile Name !", vbCritical + vbOKOnly, "Attention..."
   Exit Sub
End If

Nom_Fichier = "C:\Users\" & ActiveSheet.Range("I4") & ".txt"
Compteur = 1

If Dir(Nom_Fichier) = "" Then
   MsgBox " Wrong name !", vbCritical + vbOKOnly, "Attention..."
   Exit Sub
Else
   ActiveSheet.Select
   NumFile = FreeFile
   Open Nom_Fichier For Input As NumFile ' ouverture du fichier
   Do While Not EOF(NumFile)
      Input #NumFile, Texte
      Sheets("Send_Email").Range("Z" & Compteur).Select
      Sheets("Send_Email").Range("Z" & Compteur).Value = Texte
      Compteur = Compteur + 1
      
   Loop

End If

ActiveSheet.Range("A1").Select
Close NumFile

End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Essayez peut être en lisant toute la ligne par Line Input #NumFile, Texte
puis en décomposant TVL = Split(Texte, ",")
puis Sheets("Send_Email").Range("Z" & Compteur).Resize(, UBound(TVL) + 1).Value = TVL
 

tolga7

XLDnaute Nouveau
Bonjour.
Essayez peut être en lisant toute la ligne par Line Input #NumFile, Texte
puis en décomposant TVL = Split(Texte, ",")
puis Sheets("Send_Email").Range("Z" & Compteur).Resize(, UBound(TVL) + 1).Value = TVL
Bonjour,

J'ai une erreur du style "tableau attendu "
 

Dranreb

XLDnaute Barbatruc
Peut être qu'un tableau de string ne lui convient pas …
Mais vous aviez dit que vous vouliez tout dans une cellule ?
Alors mettez simplement le comme valeur de cette cellule le Texte récupéré du Line Input, non ?
 

tolga7

XLDnaute Nouveau
Peut être qu'un tableau de string ne lui convient pas …
Mais vous aviez dit que vous vouliez tout dans une cellule ?
Alors mettez simplement le comme valeur de cette cellule le Texte récupéré du Line Input, non ?
Non je ne veux pas tout spécialement dans une cellule, pour le moment j'ai mes lignes de texte dans chaque ligne dans excel comme je le voulais, sauf que quand il y a une virgule, j'ai un saut a la ligne je ne sais pour quelle raison.

Regardez la différence entre les captures 1 et 2, la capture 1 est le résultat que j'ai et la deuxième capture est mon fichier texte. On peut voir sur la première capture qu'il y a plus les virgules et qu'il y a des saut de cellules a la place.
Je ne sais pas si il y a un text delimiter automatique ou comment l'annuler.
Merci beaucoup
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
quand il y a une virgule, j'ai un saut a la ligne je ne sais pour quelle raison.
Mais moi je sais pourquoi: c'est parce que l'instruction Input #N, Text ne convient pas. Elle est faite pour ne lire qu'une seule des zones de la ligne séparées justement par des virgules. Pour lire toute la ligne jusqu'au CrLf avfec les virgules il faut: Line Input #N, Text
 

tolga7

XLDnaute Nouveau
Mais moi je sais pourquoi: c'est parce que l'instruction Input #N ne convient pas. Elle est faite pour ne lire qu'une seule des zones de la ligne séparées justement par des virgules. Pour lire toute la ligne jusqu'au CrLf avfec les virgules il faut: Line Input #N
Putain merci ça marche merci beaucoup !!!!!! :):):):):)
Je me prend la tete dessus depuis plus d'une semaine...

Je ne suis pas trop expert en VBA donc je galère un peu...
J'avais une autre question si ça te dérange pas, j'essaye de sélectionner le contenu d'une colonne jusqu’à la première cellule vide exclue donc en fait sélectionner seulement les cellules ou il y a un contenu.
Mais j'arrive pas pour le moment je sélectionne cellules par cellules mais je pense qu'il y a moyen avoir un seul code.
Merci beaucoup de ton aide encore.
 

Dranreb

XLDnaute Barbatruc
Couramment on fait Set Rng = Range(Cells(2, "A"), Cells(Rows.Count, "A").End(xlUp))
Moi je préfère Set Rng = Cells(2, "A").Resize(Cells(Rows.Count, "A").End(xlUp).Row - 1)
Mais je préfère encore plus Set Rng = ListObjects(1).ListColumns(1).DatabodyRange
qui n'est possible que si la plage a fait l'objet d'une mise sous forme de tableau Excel.
 

tolga7

XLDnaute Nouveau
Couramment on fait Set Rng = Range(Cells(2, "A"), Cells(Rows.Count, "A").End(xlUp))
Moi je préfère Set Rng = Cells(2, "A").Resize(Cells(Rows.Count, "A").End(xlUp).Row - 1)
Mais je préfère encore plus Set Rng = ListObjects(1).ListColumns(1).DatabodyRange
qui n'est possible que si la plage a fait l'objet d'une mise sous forme de tableau Excel.
D'accord mais je sais pas comment l’intégrer dans mon code.

J'ai un truc de ce style, et je vois bien que c'est trop compliqué mais je sais pas comment faire autrement...

VB:
MonContenu = MonContenu & "<br>" & "<br> <b>" & Range("Z1") & "</b> <br>" & Range("Z2") & "<br>" & Range("Z3") & "<br>" & Range("Z4") & "<br>" & Range("Z5") & "<br>" & Range("Z6") & "<br>" & Range("Z7") & "<br>" & Range("Z8") & "<br>" & Range("Z9") & "<br>" & Range("Z10") & "<br>" & Range("Z11") & "<br>" & Range("Z12") & "<br>"
 

Dranreb

XLDnaute Barbatruc
Là il faut joindre le classeur montrant dans une colonne une transcription brute des textes récupérés par les Line Input, et dans une autre feuille un exemple correspondant de ce que vous voulez obtenir
 

tolga7

XLDnaute Nouveau
Là il faut joindre le classeur montrant dans une colonne une transcription brute des textes récupérés par les Line Input, et dans une autre feuille un exemple correspondant de ce que vous voulez obtenir
Il serait pas possible d'utiliser plus simplement : MonContenu = Range("Z1").End(xlUp).Select ?
 

Dranreb

XLDnaute Barbatruc
Évitez d'utiliser Activate, Select et Selection dans les macros, ça ne sert à rien et ça perturbe l'affichage. Utilisez plutôt des variables objets WorkBook, Worksheet et Range initialisées par des Set.
 

tolga7

XLDnaute Nouveau
Évitez d'utiliser Activate, Select et Selection dans les macros, ça ne sert à rien et ça perturbe l'affichage. Utilisez plutôt des variables objets WorkBook, Worksheet et Range initialisées par des Set.
Je te joins le fichier, quand tu cliques sur send mail outlook s'ouvre et le texte dans le mail s'affiche
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Chez moi sûrement pas, je ne suis pas équipé de Outlook.
 
Dernière édition:

Discussions similaires


Haut Bas