> Tous les forums > Forum Bureautique
 Séparer du texte dans celluleSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
pierre c
  Posté le 08/07/2017 @ 10:01 
Aller en bas de la page 
Petit astucien

Bonjour à tous et toutes,

D'un logiciel, je récupère des adresses mails sous Excel qui sont dans une cellule, séparées par un ";"

par ex: toto@gmail.fr;123.456@wanadoo.fr Je veux récupérer dans une autre cellule les infos à droite du ; (123.456@wanadoo.fr) j'ai essayé =droite... mais çà ne fonctionne pas à tous les coups.

Sachant que les adresses mails ont des nombres de caractères variables, et certaines cellules ne contiennent pas de seconde adresse.

Si vous avez une astuce pour automatiser (il y a 750 lignes!!!) , je suis preneur

Merci d'avance,

Pierre

Publicité
poussebois
 Posté le 08/07/2017 à 10:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Bonjour ,

Si tes adresses mails sont 2 par 2 dans une cellule, supposons A1, A2, ..., A750.

En B1, tu écris la formule : =GAUCHE(A1;CHERCHE(";";A1)-1)

En C1, tu écris la formule : =DROITE(A1;NBCAR(A1)-CHERCHE(";";A1))

Puis tu descends les formules jusqu'à la 750e ligne.

Ça marche quel que soit le nombre de caractères des emails, pas s'il n'y a qu'une seule adrees sans point-virgule. (pas eu le temps de chercher ce cas particulier).

@ +

pierre c
 Posté le 08/07/2017 à 11:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour à vous 2,

Merci pour votre prompte réponse, je vais tester la semaine prochaine et reviendrais sur mon post pour le marquer "résolu"... ou pas!

Bon W.E.

Pierre

poussebois
 Posté le 08/07/2017 à 11:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

,

En complément, pour tenir compte qu'il peut n'y avoir qu'une email dans la cellule :

En B1 : =SI(SIERREUR(CHERCHE(";";A1);99)=99;A1;GAUCHE(A1;CHERCHE(";";A1)-1))

En C1 : =SI(SIERREUR(CHERCHE(";";A1);99)=99;"";DROITE(A1;NBCAR(A1)-CHERCHE(";";A1)))

Il y a peut-être + simple ...

pierre c
 Posté le 08/07/2017 à 12:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci pour cette nouvelle formule, je vais tester la première que vous m'avez indiqué.

A+

Pierre

ferrand
 Posté le 09/07/2017 à 00:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

Une petite macro pour faire le boulot :

Sub DégrouperAdresses()
Dim i%, n%, adr
With ActiveSheet
n = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To n
adr = Split(.Cells(i, 1), ";")
.Cells(i, 2).Resize(, UBound(adr) + 1).Value = adr
Next i
End With
End Sub

Adresses groupées en col. A, à partir de ligne 1. Adapter si situation diffère.

Les adresses individualisées sont réparties sur la même ligne à partir de B (adapter si...)

Remplacer ActiveSheet par nom de feuille selon modalités d'utilisation...

Cordialement.

pierre c
 Posté le 09/07/2017 à 08:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Ferrand,

Toujours au post

Merci pour la macro, je vais essayer les formules et sans doute ta macro.

A+ Pierre

pierre c
 Posté le 12/07/2017 à 10:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour à vous tous,

Merci Poussebois pour tes secondes formules, c'est exactement ce que je cherchais et ça fonctionne.

@Ferrand, la colonne qui contient les adresses mails est I et je n'ai pas réussi à adapter ta macro

A+

Pierre

ferrand
 Posté le 12/07/2017 à 11:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Tout simplement :

Sub DégrouperAdresses()
Dim i%, n%, adr
With ActiveSheet
n = .Cells(.Rows.Count, 9).End(xlUp).Row
For i = 1 To n
adr = Split(.Cells(i, 9), ";")
.Cells(i, 10).Resize(, UBound(adr) + 1).Value = adr
Next i
End With
End Sub

Cordialement.

Publicité
pierre c
 Posté le 12/07/2017 à 16:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci Ferrand!

C'est impeccable. il y a juste un petit soucis si la cellule est vide (pas d'adresse mail de renseigné, alors la macro se bloque et renvoi une erreur 1004.

A+

Pierre

ferrand
 Posté le 12/07/2017 à 18:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Normal,

Tu ajoutes une condition :

Sub DégrouperAdresses()
Dim i%, n%, adr
With ActiveSheet
n = .Cells(.Rows.Count,9).End(xlUp).Row
For i = 1 To n
If .Cells(i, 9) <> "" Then

adr = Split(.Cells(i, 9), ";")
.Cells(i, 10).Resize(, UBound(adr) + 1).Value = adr
End If

Next i
End With
End Sub

pierre c
 Posté le 12/07/2017 à 20:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je le savais!!

Merci encore Ferrand!

Je marque mon post résolu.

A+

Pierre

mdo100
 Posté le 13/07/2017 à 07:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour pierre c, poussebois, Anonyme, ferrand,

Tout est simple avec ferrand comme habituellement et que je salut au passage.

Mais on peut le faire avec une formule.

Si en "I2" nous avons toto@gmail.fr;123.456@wanadoo.fr;truc.muche@gmail.com;chose.bidule@orange.fr

Alors en "J2"

=SI($I2<>"";SI(NBCAR($I2)-NBCAR(SUBSTITUE($I2;";";""))+1<COLONNES(J:$J);"";SI(COLONNES(J:$J)>NBCAR($I2)-NBCAR(SUBSTITUE($I2;";";""));DROITE($I2;NBCAR($I2)-TROUVE("^^";SUBSTITUE($I2;";";"^^";NBCAR($I2)-NBCAR(SUBSTITUE($I2;";";"")))));SI(COLONNES(J:$J)=1;STXT($I2;1;TROUVE("^^";SUBSTITUE($I2;";";"^^";1))-1);STXT($I2;TROUVE("^^";SUBSTITUE($I2;";";"^^";COLONNES(J:$J)-1))+1;TROUVE("^^";SUBSTITUE($I2;";";"^^";COLONNES(J:$J)))-TROUVE("^^";SUBSTITUE($I2;";";"^^";COLONNES(J:$J)-1))-1))));"")

Tirer vers la droite et vers le bas.

Cordialement.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
34,99 €Enceinte connectée Amazon Echo Dot avec assistant Alexa + prise connectée Tapo P100 à 34,99 €
Valable jusqu'au 06 Avril

Amazon fait une promotion sur un pack comprenant l'enceinte Amazon Echo Dot (3ème génération) et la prise connectée Tapo P100 qui passe à 34,99  (au lieu de 74 €). L'appareil piloté par la voix fonctionne avec Alexa, l’intelligence artificielle développée par Amazon. Vous pourrez avec elle écouter de la musique, interagir avec vos appareils domotiques, écouter les infos, la radio, connaître la météo et d’accéder à des milliers d’autres possibilités grâce aux Skills : recettes de cuisine, petits jeux, etc. Par rapport à la génération précédente, le son est amélioré et l'enceinte arbore un nouveau design. Vous pourrez piloter à la voix la prise connectée pour allumer ou éteindre un appareil branché dessus, comme une lampe par exemple. La prise est totalement programmable et contrôlable à distance avec votre smartphone. Une excellente affaire !


> Voir l'offre
271,95 €Kit de 64 Go (4 x 16 Go) de mémoire DDR4 Crucial Ballistix Sport LT 3000 MHz à 271,95 €
Valable jusqu'au 04 Avril

Amazon Allemagne fait une promotion sur le kit de 64 Go (4x16 Go) de mémoire DDR4 Crucial Ballistix Sport LT 3000 MT/s CL15 qui passe à 267,22 € (avec la TVA ajustée). Comptez 4,73 € pour la livraison en France soit un total de 271,95 € livré alors qu'on le trouve ailleurs à plus de 350 €.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douanes. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> Voir l'offre
22,99 €Sac à dos Sparin pour ordinateur portable jusqu'à 17.3 pouces à 22,99 €
Valable jusqu'au 09 Avril

Amazon fait une promotion sur le sac à dos Sparin pour ordinateur portable jusqu'à 17.3 pouces qui passe à 22,99 € alors qu'on le trouve habituellement à 32,99 €. Ce sac à dos renforcé, rembourré et étanche comporte un compartiment pour un ordinateur de dimensions max 340x40x470 (17.3 pouces) et un autre compartiment pour ranger vos affaires. Une poche frontale zippée est également présente. Notez que des fentes protégées vous permettront de brancher depuis l'extérieur une prise USB et un casque audio aux appareils à l'intérieur du sac.


> Voir l'offre

Sujets relatifs
Aucun sujet pertinent lié trouvé
 > Tous les forums > Forum Bureautique