FICHIER CSV

Ailleurs63

XLDnaute Nouveau
Bonjour à tous.
Si je fais appel à vous c'est que j'ai un soucis : j'ai un fichier CSV qui contient environ 4000 contacts.
Hors, pour une partie des contacts, l'adresse e-mail n'est pas dans la colonne EMAIL mais dans la colonne TELEPHONE.
Je cherche donc une solution pour contrôler la présence d'une adresse dans la colonne MAIL et en cas de cellule vide ou adresse sans @ remplacer par le contenu de la cellule de TELEPHONE. Par avance merci !
 

Lone-wolf

XLDnaute Barbatruc
Bonjour ailleur et bienvenue sur XLD :)

Sans fichier, difficile de t'aider. De plus tu ne dis pas dans quel colonne (A B C D etc.) les données se trouvent. Sinon faire un test avec ceci à mettre dans le module de la feuille.

VB:
Private Sub Worksheet_Change(ByVal R As Range)
    Application.EnableEvents = False
    'A remplacer par la colonne des adresses mail
    If Not Intersect(R, Columns("D:D")) Is Nothing Then

        If R.Offset(0, 0) = vbNullString Then
            'ici 3 = colonne G - à remplacer par la colonne des téléphones
            R.Offset(0, 3).Copy R.Offset(, 0)
            R.Offset(0, 3).ClearContents
        End If
    End If

    Application.EnableEvents = True
End Sub
 
Dernière édition:

Ailleurs63

XLDnaute Nouveau
Bonjour ailleur et bienvenue sur XLD :)

Sans fichier, difficile de t'aider. De plus tu ne dis pas dans quel colonne (A B C D etc.) les données se trouvent.
Bonjour. J'ai peut être, par méconnaissance, posté au mauvais endroit. Le pb ne vient pas de mon fichier CSV lui -même.
Donc un peu plus de détails : Je souhaite contrôler la présence d'une adresse email dans la colonne adresse email et en cas d'absence, remplacer la valeur par l'adresse email de la colonne téléphone 1. Merci !
exemple_csv.jpg
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Une solution testée sous XL 2013
(en me basant sur l'image du message#3)
VB:
Sub a()
Dim c As Range
For Each c In Range("C:C:D:D").SpecialCells(xlCellTypeConstants, 2)
If InStr(c, "@") > 0 Then
c.Cut Cells(c.Row, "B")
End If
Application.CutCopyMode = False
Next
End Sub

NB:
@Ailleurs63
Désolé de ne pas l'avoir posté deux heures plutôt
Mais désormais tu as une superbe dextérité digitale ;)
 

Staple1600

XLDnaute Barbatruc
Re

Non mais ce n'est pas forcément grave ;)
Il suffit d'ouvrir le CSV dans Excel, d’exécuter la macro puis d'enregistrer les modifs.
On peut aussi peaufiner (il y a déjà tout cela en stock sur XLD)
1) La macro ouvre une boite de dialogue pour parcourir une arboresence à la recherche du CSV
2) L'utilisateur sélectionne le CSV, la macro l'ouvre (ou le copie dans une feuille temporaire du classeur contenant le code VBA)
3) La macro traite les données en mettant les mails dans la bonne colonne.
4) La macro enregistre les modifs dans un nouveau CSV (si on veut être prudent) ou dans un nouveau classeur Excel d'une seule feuille.
(le tout de manière transparente pour l'utilisateur à partir de la sélection du CSV dans la boite de dialogue Ouvrir)

Tous ces points (1,2, 3 et 4) dorment dans la poussière des archives du forum. ;)

NB: J'allais justement te faire la remarque ;) (lol)
Message 1
Bonjour à tous.
j'ai un fichier CSV qui contient environ 4000 contacts.
Message 2
Bonjour ailleur et bienvenue sur XLD :)
Sinon faire un test avec ceci à mettre dans le module de la feuille.
 

Discussions similaires

Réponses
2
Affichages
222
Réponses
10
Affichages
290
Réponses
2
Affichages
99
Réponses
3
Affichages
274

Statistiques des forums

Discussions
311 725
Messages
2 081 948
Membres
101 849
dernier inscrit
florentMIG