Lier deux valeurs textes

glaine

XLDnaute Junior
Bonjour à tous,

Merci par avance à tous ceux qui pourraient m'aider.

Le problème : Je voudrais créer un programme qui ressemble à la fonction concatener. Je veux donc lier deux valeurs textes dans une cellule, mais je voudrais pouvoir effacer les cellules où se trouvent les valeurs séparées. J'ai donc pensé à récupérer ces valeurs pour les insérer dans une formule dans la cellule active. Mon problème est qu'elle ne me retourne rien. J'espère ne pas avoir été trop confus. Je sais que le noeud de ma question se trouve dans m3.
Amicalement
Code:
Dim val1, val2 As String
Sub m1()
Selection.Copy
    ActiveCell.Offset(-1, 3).Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues
    val1 = Selection.Value
    Application.CutCopyMode = False
    
End Sub

Sub m2()
Selection.Copy
    ActiveCell.Offset(-1, 3).Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues
    val2 = Selection.Value
    MsgBox (val2)
    Application.CutCopyMode = False

End Sub

Sub m3()
    ActiveCell.Offset(-1, 3).Range("A1").Select
    val1 = ActiveCell.Offset(-1, 3).Range("A1").Value
    ActiveCell.Offset(-1, 3).Range("A1").Select
    val2 = ActiveCell.Offset(-1, 3).Range("A1").Value
    ActiveCell.Offset(0, -1).Range ("A1")
    ActiveCell.FormulaR1C1 = val1 & val2
    End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Lier deux valeurs textes

Bonjour Glaine, bonjour le forum,

Je ne comprends pas du tout où tu veux en venir avec ton code... Pourrais-tu, à l'aide d'un fichier exemple, nous montrer ce que tu as avant et ce que tu voudrais après et par quel moyen tu veux l'obtenir ?
 

Modeste

XLDnaute Barbatruc
Re : Lier deux valeurs textes

Bonjour glaine,

Je ne me considère pas comme un spécialiste des macros, mais en lisant ton code je me disais que, soit tu faisais beaucoup de manipulations dont l'utilité ne me saute pas aux yeux, soit la structure de ton fichier (ou autre chose) fait que la manipulation a des raisons d'être "alambiquée".

Je te suggère donc de joindre un petit fichier exemple contenant des données types et une explication détaillée de ce que tu dois réaliser

Salut Robert :)
 
Dernière édition:

glaine

XLDnaute Junior
Re : Lier deux valeurs textes

Merci à vous, je répare cela tout de suite.
Amicalement
 

Pièces jointes

  • exemple.xls
    28.5 KB · Affichages: 35
  • exemple.xls
    28.5 KB · Affichages: 34
  • exemple.xls
    28.5 KB · Affichages: 43
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Lier deux valeurs textes

Bonjour Glaine, Modeste, bonjour le forum,

En pièce jointe ton fichier modifié avec la macro événementielle BeforeDoubleClick. Double-clique dans une cellule de la colonne C...
Le code :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 3 Then Exit Sub ' si le double-clic a lieu ailleurs que dans la colonne 3, sort de la procédure
If Target.Row < 1 Then Exit Sub ' si le double-clic a lieu dans la ligne 1, sort de la procédure
Cancel = True 'annule le mode édition lié au double-clic
Target.Offset(-1, 2).Value = Target.Value & Target.Offset(0, 1).Value
End Sub
Le fichier :
 

Pièces jointes

  • Glaine_v01.xls
    33.5 KB · Affichages: 33

Modeste

XLDnaute Barbatruc
Re : Lier deux valeurs textes

Re-bonjour,

Je ne sais si j'ai bien compris, mais si tu sélectionnes les deux cellules rouges au départ, ceci devrait suffire:
VB:
Sub concatener()
Selection(1).Offset(-1, 2) = Selection(1) & Selection(2)
End Sub

Les vraies questions sont: est-ce que tu sélectionneras à chaque fois? Y aura-t-il toujours 2 cellules (ni plus, ni moins)? Faudra-t-il chaque fois décaler d'une ligne vers le haut et de 2 colonnes vers la droite? Qu'est-ce qui déclenchera la macro?

Edit: Bon, Robert a pris les devants, une fois de plus :D
 

glaine

XLDnaute Junior
Re : Lier deux valeurs textes

Bonjour messieurs,

Merci à vous, la bonne réponse était celle de Robert. Modeste, ta solution prend automatiquement la valeur du dessous et pas celle à droite, j'ai essayé de la réparer sans succès. Je remets la solution de Robert adaptée pour ceux que cela intéresse. Mon problème est résolu. Merci encore.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 3 Then Exit Sub ' si le double-clic a lieu ailleurs que dans la colonne 3, sort de la procédure
If Target.Row < 1 Then Exit Sub ' si le double-clic a lieu dans la ligne 1, sort de la procédure
Cancel = True 'annule le mode édition lié au double-clic
Target.Offset(-1, 2).Value = Target.Value & Chr(32) & Target.Offset(0, 1).Value
End Sub
 

Discussions similaires

Réponses
12
Affichages
243
Réponses
2
Affichages
170

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22