En dépit de quelques heures de lecture et d'essais infructueux, je m'en remets aux spécialistes et les remercie d'avance pour leur aide.
Avec certains collages spéciaux issus d'un fichier pdf j'obtiens ceci:
15092-7
Rare
butterfly
15093-16
Blue
on blue
15094-12
9:20
special (*)
Après sélection des cellules texte, et avec une petite macro, j'espère obtenir ceci:
15092-7
Rare butterfly
15093-16
Blue on blue
15094-12
9:20 special (*)
Comme ça arrive assez souvent, je suis fatigué d'écrire par exemple =CONCATENER(C4365;" ";D4365)
Alors! Merci d'avance tout le mondesauf aux ricaneurs colériques
Sélectionne la zone à traiter puis cliquer sur le bouton Hop!
Le code de la macro dans module1:
VB:
Sub Col23()
Dim i&
With Selection
If .Columns.Count <> 3 Or .Columns.Areas.Count <> 1 Then MsgBox "il faut sélectionner une zone à 3 colonnes consécutives!", vbCritical: Exit Sub
For i = 1 To .Rows.Count: .Cells(i, 2) = .Cells(i, 2) & " " & .Cells(i, 3): .Cells(i, 3).ClearContents: Next
End With
End Sub
@coline741
Cela pourrait donner quelque chose comme cela
VB:
Sub Macro1()
Dim Der_Lig As Long 'variable
Der_Lig = Cells(Rows.Count, "B").End(xlUp).Row '1er ligne non vide Colonne A
Range("D2").FormulaR1C1 = "=RC[-2]&"" ""&RC[-1]" 'concaténation
Range("D2:D" & Der_Lig).FillDown 'recopie vers le bas
Range("D2:D" & Der_Lig) = Range("D2:D" & Der_Lig).Value ' suppression formules
Range("B:C").EntireColumn.Delete 'suppression colonne B et C
End Sub
@coline741
Cela pourrait donner quelque chose comme cela
VB:
Sub Macro1()
Dim Der_Lig As Long 'variable
Der_Lig = Cells(Rows.Count, "B").End(xlUp).Row '1er ligne non vide Colonne A
Range("D2").FormulaR1C1 = "=RC[-2]&"" ""&RC[-1]" 'concaténation
Range("D2:D" & Der_Lig).FillDown 'recopie vers le bas
Range("D2:D" & Der_Lig) = Range("D2:D" & Der_Lig).Value ' suppression formules
Range("B:C").EntireColumn.Delete 'suppression colonne B et C
End Sub
Merci pour l'essai, mais cette macro ne fonctionne pas pour mes fichiers :
- aucune colonne ne peut être supprimée après
- pas de recopie vers le bas
- je dois pouvoir sélectionner les lignes intereressées, lancer la macro et bingo
@coline741
Il fallait comprendre ma macro comme un point de départ à adapter
Et ou une invitation faite au demandeur de mettre les mains dans le cambouis
Sélectionne la zone à traiter puis cliquer sur le bouton Hop!
Le code de la macro dans module1:
VB:
Sub Col23()
Dim i&
With Selection
If .Columns.Count <> 3 Or .Columns.Areas.Count <> 1 Then MsgBox "il faut sélectionner une zone à 3 colonnes consécutives!", vbCritical: Exit Sub
For i = 1 To .Rows.Count: .Cells(i, 2) = .Cells(i, 2) & " " & .Cells(i, 3): .Cells(i, 3).ClearContents: Next
End With
End Sub
Sub a()
Dim t, x, i&
t = Range("B3").CurrentRegion.Value
ReDim x(UBound(t, 1), 1)
For i = LBound(t, 1) To UBound(t, 1)
x(i, 0) = t(i, 1)
x(i, 1) = t(i, 2) & Chr(32) & t(i, 3)
Next
[B6].Resize(UBound(x) + 1).Value = x
End Sub
Mais si j'étais moi, j'opterais pour le maquereau de Poméranie (à pécher au #6)
(Désolé, @mapomme, pour cet humour de piètre qualité
Sélectionne la zone à traiter puis cliquer sur le bouton Hop!
Le code de la macro dans module1:
VB:
Sub Col23()
Dim i&
With Selection
If .Columns.Count <> 3 Or .Columns.Areas.Count <> 1 Then MsgBox "il faut sélectionner une zone à 3 colonnes consécutives!", vbCritical: Exit Sub
For i = 1 To .Rows.Count: .Cells(i, 2) = .Cells(i, 2) & " " & .Cells(i, 3): .Cells(i, 3).ClearContents: Next
End With
End Sub
Sub a()
Dim t, x, i&
t = Range("B3").CurrentRegion.Value
ReDim x(UBound(t, 1), 1)
For i = LBound(t, 1) To UBound(t, 1)
x(i, 0) = t(i, 1)
x(i, 1) = t(i, 2) & Chr(32) & t(i, 3)
Next
[B6].Resize(UBound(x) + 1).Value = x
End Sub
Mais si j'étais moi, j'opterais pour le maquereau de Poméranie (à pécher au #6)
(Désolé, @mapomme, pour cet humour de piètre qualité
Sub Avec_Selection()
Dim t, x, i&
t = Selection.Value
ReDim x(1 To UBound(t, 1), 1 To 3)
For i = 1 To 3
x(i, 1) = t(i, 1)
x(i, 2) = t(i, 2) & Chr(32) & t(i, 3)
x(i, 3) = Null
Next
Selection.Item(1).Resize(UBound(x, 1), 3).Value = x
End Sub