Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Transfert de colonne vba excel

  • Initiateur de la discussion Initiateur de la discussion matrix
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

matrix

XLDnaute Occasionnel
Bonjour a tous,

Je voudrais faire en sorte que les 7 caractères de la fin, incluant l’espace dans le code postal, se transfert dans la colonne B et que la Province a 2 caractères ex : QC ou ON, se transfert dans la colonne C. Une fois fait, il doit efface le code postal et la province de la colonne A.

Tous cela en vba.

Comment faire s.v.p?

Merci pour votre aide.
 

Pièces jointes

Re : Transfert de colonne vba excel

Bonjour

Une première approche si les données ont la même structure sans vba

Sélectionner la colonne
menu données
option convertir
étape 1 option délimité
étape 2 virgule

Ok
Ci dessous une macro pour que le nombre de virgule soit identique
Code:
Option Explicit
Sub ajoutvirgule()

Dim i As Long
Dim j() As String
Dim nbvirgule As Integer
Dim cellule As Range
Dim plage As Range

Dim nomfeuille1 As String
Dim col1 As String
Dim classeur1 As String
Dim lidep1 As Long
Dim dl1 As Long

'**********************************
nomfeuille1 = "Sheet3"
col1 = "a"
lidep1 = 1

With Sheets(nomfeuille1)
dl1 = Sheets(nomfeuille1).Range(col1 & "65536").End(xlUp).Row
Set plage = .Range(col1 & lidep1 & ":" & col1 & .Range(col1 & "65536").End(xlUp).Row)
For Each cellule In plage
        j = Split(cellule.Value, ",")
        If UBound(j) > nbvirgule Then nbvirgule = UBound(j)
     
Next cellule
For Each cellule In plage
        j = Split(cellule.Value, ",")
        If UBound(j) < nbvirgule Then cellule.Value = "  ," & cellule.Value
     
Next cellule
End With

End Sub

L'utilisation de la conversion de données permet d'obtenir le résultat souhaité en utilisant la fonction convertir une fois avec l'option "délimité" une deuxième fois en prenant l'option "largeur fixe".


JP
 
Dernière édition:
Re : Transfert de colonne vba excel

salut,
essai ca :
Code:
Sub code_postal()
For i = 2 To Range("A65536").End(xlUp).Row
    'on récupere toutes l adresse sans blanc en trop (le trim)
    add_all = Trim(Cells(i, 1))
    'on compte le nombre de caractere de l adresse
    nb_car = Len(add_all)
    'on récupere l'adresse sans le code et la region
    add_final = Left(add_all, nb_car - 11)
    'on récupere le code et la region
    add_partie = Right(add_all, 11)
    'on récupere le region
    add_reg = Mid(add_partie, 1, 2)
    'on récupere la code
    add_code = Right(add_partie, 7)
'on remet dans les cases
Cells(i, 1) = add_final
Cells(i, 2) = add_code
Cells(i, 3) = add_reg
Next i
End Sub
petit pbl c est que tu peux le faire tourner que 1 fois 🙂 car apres ton adresse à plus la meme tete , je te conseil de mettre les resultats sur 1 autre feuille !!

ps : il n y a aucun gestion d erreur 🙂 donc apres à toi d adapter en fonction des eventuelles adresse toutes chelou que tu aura🙂



voici ma bible pour la gestion des chaines de caracteres :

http://silkyroad.developpez.com/VBA/ManipulerChainesCaracteres/
 

Pièces jointes

Dernière édition:
Re : Transfert de colonne vba excel

Bonjour tous

Une autre méthode (uniquement pour code postal et province)

Code:
Sub macroextraitCP()
For i = 2 To [A65536].End(xlUp).Row
Cells(i, 2) = _
StrReverse(Split(StrReverse(Cells(i, 1).Text), ".")(0))
Cells(i, 3) = _
StrReverse(Split(Split(StrReverse(Cells(i, 1).Text), ".")(1), " ")(0))
Next
End Sub

A+
 
Dernière édition:
Re : Transfert de colonne vba excel

Re, bonsoir jp14, pierrejean

Pour ne pas avoir à supprimer les . et ,
Code:
Sub macroALLinONE()
For i = 2 To [A65536].End(xlUp).Row
Cells(i, 2) = _
Split(StrReverse(Cells(i, 1).Text), ".")(0)
Cells(i, 3) = _
StrReverse(Split(Split(StrReverse(Cells(i, 1).Text), ".")(1), " ")(0))
Cells(i, 4) = _
StrReverse(Split(Split(StrReverse(Cells(i, 1).Text), ",")(1), " ")(0))
Next
End Sub


A+
 
Dernière édition:
Re : Transfert de colonne vba excel

Re



Une petit erreur de copier/coller (désolé)

Ainsi c'est mieux

Code:
Sub macroALLinONE()
For i = 2 To [A65536].End(xlUp).Row
Cells(i, 2) = _
StrReverse(Split(StrReverse(Cells(i, 1).Text), ".")(0))
Cells(i, 3) = _
StrReverse(Split(Split(StrReverse(Cells(i, 1).Text), ".")(1), " ")(0))
Cells(i, 4) = _
StrReverse(Split(Split(StrReverse(Cells(i, 1).Text), ",")(1), " ")(0))
Next
End Sub

PS: que je n'avais pas commis dans mon précédent message
Lien supprimé

A+

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
664
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…