Extraire données VBA d'une cellule Excel
Fermé
Tibo
-
26 août 2011 à 13:59
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 29 août 2011 à 19:45
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 29 août 2011 à 19:45
A voir également:
- Extraire données VBA d'une cellule Excel
- Liste déroulante excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Verrouiller cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Excel compter cellule couleur sans vba - Guide
4 réponses
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
26 août 2011 à 23:43
26 août 2011 à 23:43
Bonsoir,
Je viens de trouver une formule VBA sur un forum qui fonctionne bien
Tu es sûr de vraiment l'avoir testée pour l'utilisation que tu as besoin ???
Tu ne peux pas te baser sur les espaces puisque le nombre n'est jamais le même.
Une proposition qui recherche 5 chiffres consécutifs et qui découpe autour de cette position :
Sélectionne toute la plage concernée (sur 1 colonne), si une cellule ne contient pas 5 chiffres consécutifs elle restera inchangée.
eric
Je viens de trouver une formule VBA sur un forum qui fonctionne bien
Tu es sûr de vraiment l'avoir testée pour l'utilisation que tu as besoin ???
Tu ne peux pas te baser sur les espaces puisque le nombre n'est jamais le même.
Une proposition qui recherche 5 chiffres consécutifs et qui découpe autour de cette position :
Sub eclate() Dim c As Range, pos As Long, i As Long, ch As String For Each c In Selection ch = c For pos = 1 To Len(ch) - 1 If IsNumeric(Mid(ch, pos, 6)) Then c = Left(ch, pos - 1) c.Offset(0, 1) = Mid(ch, pos + 1, 5) c.Offset(0, 2) = Right(ch, Len(ch) - pos - 6) Exit For End If Next pos Next c End Sub
Sélectionne toute la plage concernée (sur 1 colonne), si une cellule ne contient pas 5 chiffres consécutifs elle restera inchangée.
eric
ccm81
Messages postés
10853
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 avril 2024
2 404
26 août 2011 à 15:34
26 août 2011 à 15:34
bonjour
cette procedure permet de couper en trois la valeur de la cellule sélectionnée
est ce cette action que tu veux réaliser sur un ensemble de cellules
- si oui lesquelles?
- sinon que veux tu faire exactement
bonne suite
cette procedure permet de couper en trois la valeur de la cellule sélectionnée
est ce cette action que tu veux réaliser sur un ensemble de cellules
- si oui lesquelles?
- sinon que veux tu faire exactement
bonne suite
Effectivement c'est bien cela que je veux faire. J'ai juste oublier de préciser une chose : il y a 6 espaces entre chaque valeurs. J'illustre parce que je sais que je ne suis pas clair :
A2 : 78 Impasse de Terre Neuve 49160 Saint-philbert-de-Bouaine
A5 : Le pré valois 49730 Varennes sur Maine
Du coup, je me disais qu'il était facile de séparer en trois ces cases, en tenant compte des 6 espaces. Oui, je veux couper en 3 : adresse, puis code postal, puis ville, qui sont chacun espacés de 6 espaces.
Je veux effectuer cette action sur une plage de données mais chaque prospect se réparti en 3 lignes :
A1 : le nom
A2 : l'adresse complète (adresse, CP, ville)
A3 : rien
A4 : le nom du suivant
A5 : l'adresse complète du suivant
et ainsi de suite...
L'objectif est d'avoir :
A1 : le nom
A2 : adresse B2 : code postal C2 : ville
A3 : rien
A4 : le nom du suivant
A5 : adresse du suivant B5 : CP de suivant etc...
Veuillez m'excuser si je ne suis pas assez clair... N'hésitez pas à me demander d'autres informations !
Merci !
A2 : 78 Impasse de Terre Neuve 49160 Saint-philbert-de-Bouaine
A5 : Le pré valois 49730 Varennes sur Maine
Du coup, je me disais qu'il était facile de séparer en trois ces cases, en tenant compte des 6 espaces. Oui, je veux couper en 3 : adresse, puis code postal, puis ville, qui sont chacun espacés de 6 espaces.
Je veux effectuer cette action sur une plage de données mais chaque prospect se réparti en 3 lignes :
A1 : le nom
A2 : l'adresse complète (adresse, CP, ville)
A3 : rien
A4 : le nom du suivant
A5 : l'adresse complète du suivant
et ainsi de suite...
L'objectif est d'avoir :
A1 : le nom
A2 : adresse B2 : code postal C2 : ville
A3 : rien
A4 : le nom du suivant
A5 : adresse du suivant B5 : CP de suivant etc...
Veuillez m'excuser si je ne suis pas assez clair... N'hésitez pas à me demander d'autres informations !
Merci !
Salut eriiic !
Merci pour ta réponse. Alors, deux choses.
1. Les espaces sont toujours au nombre de 6. Donc effectivement, le code que j'avais trouvé fonctionnait très bien, sauf lorsque je voulais sélectionner plus d'une case, voire une colonne.
2. La formule que tu me proposes fonctionne très bien sur une colonne entière mais le résultat n'est pas tout à fait celui attendu. En effet, on obtient bien 3 cases (pour les cellules où 5 chiffres sont consécutifs). La première contient ce qu'il faut (exemple : 78 Impasse de Terre Neuve). Mais çà se complique au niveau de la 2ème et 3ème. La 2ème contient juste le premier chiffre du code postal (exemple : 4), et la 3ème contient le reste du code postal et la ville (exemple : 9160 Saint-philbert-de-Bouaine).
Ne m'y connaissant pas du tout en VBA, je reviens donc vers toi pour te soumettre le problème ! Faut-il reprendre la formule que j'avais soumise ou la tienne... Je ne sais pas !
Encore merci,
Thibault.
Merci pour ta réponse. Alors, deux choses.
1. Les espaces sont toujours au nombre de 6. Donc effectivement, le code que j'avais trouvé fonctionnait très bien, sauf lorsque je voulais sélectionner plus d'une case, voire une colonne.
2. La formule que tu me proposes fonctionne très bien sur une colonne entière mais le résultat n'est pas tout à fait celui attendu. En effet, on obtient bien 3 cases (pour les cellules où 5 chiffres sont consécutifs). La première contient ce qu'il faut (exemple : 78 Impasse de Terre Neuve). Mais çà se complique au niveau de la 2ème et 3ème. La 2ème contient juste le premier chiffre du code postal (exemple : 4), et la 3ème contient le reste du code postal et la ville (exemple : 9160 Saint-philbert-de-Bouaine).
Ne m'y connaissant pas du tout en VBA, je reviens donc vers toi pour te soumettre le problème ! Faut-il reprendre la formule que j'avais soumise ou la tienne... Je ne sais pas !
Encore merci,
Thibault.
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
Modifié par eriiic le 29/08/2011 à 19:48
Modifié par eriiic le 29/08/2011 à 19:48
Bonjour,
1. Les espaces sont toujours au nombre de 6. Donc effectivement, le code que j'avais trouvé fonctionnait très bien, sauf lorsque je voulais sélectionner plus d'une case, voire une colonne.
Ben si le code que tu as fonctionne très bien je me suis fourvoyé.
En voyant ton exemple je pensais que tu voulais séparer le n° et la voie, le code postal et la commune.
C'est bien ce que fait mon code : début d'adresse en A, code postal sur 5 chiffre en B et commune en C.
Donc ton code qui va bien et qui agira sur la sélection en cours :
eric
1. Les espaces sont toujours au nombre de 6. Donc effectivement, le code que j'avais trouvé fonctionnait très bien, sauf lorsque je voulais sélectionner plus d'une case, voire une colonne.
Ben si le code que tu as fonctionne très bien je me suis fourvoyé.
En voyant ton exemple je pensais que tu voulais séparer le n° et la voie, le code postal et la commune.
C'est bien ce que fait mon code : début d'adresse en A, code postal sur 5 chiffre en B et commune en C.
Donc ton code qui va bien et qui agira sur la sélection en cours :
Sub eclate() Dim c As Range For Each c In Selection c.Resize(1, 3) = Split(c.Value, " ", 3) Next c End Sub
eric