Regrouper les chiffres qui sont dans 2 colonnes, dans 1 seule colonne

chris427

XLDnaute Junior
Bonjour à toutes et à tous,

J'ai fait une conversion de fichier pdf vers excel (avec nitro, un site en ligne).
Malheureusement, dans le fichier pdf, il y a un espace entre les milles et les centaines. Du coup, la conversion a créé 2 colonnes.
Je voudrais regrouper les chiffres qu'il a dans ces 2 colonnes dans 1 seule colonne.
Exemple : 1ere colonne = 34, 2e colonne = 500
Je voudrais avoir le résultat suivant : 1 seule colonne avec 34500.
Je joins un fichier excel pour plus de compréhension.

Merci infiniment pour votre aide,

Chris
 

Pièces jointes

  • chris_excel.xlsx
    8.2 KB · Affichages: 71

job75

XLDnaute Barbatruc
Bonjour chris427, pascal82,

Placer cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim col%, P As Range, t, i&
col = 4 'colonne D (où doit se trouver le résultat), à adapter
Set P = Intersect(Columns(col).Resize(, 2), Me.UsedRange.EntireRow)
t = P 'matrice, plus rapide
For i = 1 To UBound(t)
  If t(i, 2) <> "" Then
    t(i, 1) = t(i, 1) & t(i, 2)
    t(i, 2) = ""
  End If
Next
Application.EnableEvents = False: P = t: Application.EnableEvents = True
End Sub
Enregistrer le fichier en .xlsm (acceptant les macros), voir pièce jointe.

La macro utilise un tableau VBA, elle est de ce fait très rapide.

A+
 

Pièces jointes

  • chris_excel(1).xlsm
    23.1 KB · Affichages: 83

job75

XLDnaute Barbatruc
Bonjour à tous,

Pour tester sur un grand tableau copier la plage D4:E6 sur D4:E90003.

Chez moi (Win 10 - Excel 2013) la macro s'exécute en 0,7 seconde.

Et une fois le regroupement fait elle s'exécute en 0,3 seconde.

Edit : la 2ème exécution se réduit à 0,01 seconde en ajoutant un test :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim col%, P As Range, t, i&
col = 4 'colonne D (où doit se trouver le résultat), à adapter
Set P = Intersect(Columns(col).Resize(, 2), Me.UsedRange.EntireRow)
If Application.CountA(P.Columns(2)) Then 'teste la colonne E
  t = P 'matrice, plus rapide
  For i = 1 To UBound(t)
    If t(i, 2) <> "" Then
      t(i, 1) = t(i, 1) & t(i, 2)
      t(i, 2) = ""
    End If
  Next
  Application.EnableEvents = False: P = t: Application.EnableEvents = True
End If
End Sub
A+
 
Dernière édition:

chris427

XLDnaute Junior
Bonjour à toutes et à tous,
Merci pour toutes ces solutions !!
Pour la macro, je ne vais pas m'en servir car j'ai 100 tableaux comme ça, et je ne maîtrise pas du tout l'affaire...

Concatener et la solution de gosselien (=A2&B2) fonctionnent super bien
MAIS... ça ne me prend pas les valeurs 0. Donc, quand j'ai une colonne avec 34 et la 2eme avec 093,
ça ne fait plus 34093 mais 3493.
Est-ce qu'il y a un moyen d'avoir la valeur 0 en début de cellule prise en compte ?

Merci infiniment pour votre aide !

Christ
 

chris427

XLDnaute Junior
Rebonjour Gosselien
j'ai 093 dans une cellule. Si je transforme cette cellule en format texte, le 0 disparaît. :(

Edit : Je peux mettre le format personnalisé 000, et le 0 réapparaît, mais le concatener (et le &) m'enlèvent le 0 quand même.

Faire à la main : si j'avais 2 tableaux ça irait bien, mais j'en ai 200... à convertir pour lundi...
 
Dernière édition:

gosselien

XLDnaute Barbatruc
Une cellule "standard" NE PEUT PAS contenir 093 !!!
Pour avoir 093 il faut qu'elle soit en format texte ou que le 093 soit précédé de ceci : ' (apostrophe)
Si pas, tu peux envoyer une copie avec 10 lignes :)
P.
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
Bonjour à toutes et à tous,

J'ai fait une conversion de fichier pdf vers excel (avec nitro, un site en ligne).
Malheureusement, dans le fichier pdf, il y a un espace entre les milles et les centaines. Du coup, la conversion a créé 2 colonnes.
Je voudrais regrouper les chiffres qu'il a dans ces 2 colonnes dans 1 seule colonne.
Exemple : 1ere colonne = 34, 2e colonne = 500
Je voudrais avoir le résultat suivant : 1 seule colonne avec 34500.
Je joins un fichier excel pour plus de compréhension.

Merci infiniment pour votre aide,

Chris
Bonjour,

Essaye:
=D6*1000+E6

Salutations
JJ
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 202
Membres
103 157
dernier inscrit
youma