Bonjour à toutes et à tous,
Je vous souhaite une belle journée
Je fais appel à vous pour un p'tit coup de pouce codé pour mon code.
Le contexte
Dans le fichier test joint : 2 feuilles
- Feuille_Base............. qui contient les textes d'origine
- Feuille_réception... qui est alimentée au clic dans une cellule (B1 - C1 - D1)
Voici mon besoin :
J'ai besoin que dans la "Feuille_réception", à l'affichage après clic dans l'une des cellules B1 - C1 - D1, que la mise en forme des cellules "Feuille_Base" soient respectées.
J'ai pensé à une solution qui fonctionne
Il suffit de formater les textes dans "Feuille_Base"
et de faire un copier/coller dans " Feuille_réception"
Toutefois, le code devient "répétifif" et très long :
Ce n'est que pour 3 cellules en "Feuille_Base" et dans le fichier dans lequel je veux l'insérer, il y a environ 45 cellules !
Je pense qu'il est possible de raccourcir le code ... peut-être avec une boucle mais je ne sais pas faire.
Auriez-vous le bon code ?
Je joins le fichier test modifié.
Avec mes remerciements,
Amicalement,
lionel,
Je vous souhaite une belle journée
Je fais appel à vous pour un p'tit coup de pouce codé pour mon code.
Le contexte
Dans le fichier test joint : 2 feuilles
- Feuille_Base............. qui contient les textes d'origine
- Feuille_réception... qui est alimentée au clic dans une cellule (B1 - C1 - D1)
Voici mon besoin :
J'ai besoin que dans la "Feuille_réception", à l'affichage après clic dans l'une des cellules B1 - C1 - D1, que la mise en forme des cellules "Feuille_Base" soient respectées.
J'ai pensé à une solution qui fonctionne
Il suffit de formater les textes dans "Feuille_Base"
et de faire un copier/coller dans " Feuille_réception"
Toutefois, le code devient "répétifif" et très long :
VB:
Private Sub Worksheet_SelectionChange(ByVal r As Range)
If Not Intersect(r, Range("b1:f1")) Is Nothing And r.Count = 1 Then
Application.ScreenUpdating = False
Application.EnableEvents = False
If Not Intersect(r, Range("b1")) Is Nothing Then
Range("F5:I12").Select
With Selection
.HorizontalAlignment = xlGeneral
.WrapText = False
.MergeCells = False
End With
Sheets("Feuille_Base").Range("b1").Copy
Sheets("Feuille_réception").Select
Range("F5").Select
ActiveSheet.Paste
Range("F5:I12").Select
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlGeneral
.WrapText = True
.MergeCells = True
End With
End If
If Not Intersect(r, Range("c1")) Is Nothing Then
Range("F5:I12").Select
With Selection
.HorizontalAlignment = xlGeneral
.WrapText = False
.MergeCells = False
End With
Sheets("Feuille_Base").Range("b2").Copy
Sheets("Feuille_réception").Select
Range("F5").Select
ActiveSheet.Paste
Range("F5:I12").Select
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlGeneral
.WrapText = True
.MergeCells = True
End With
End If
If Not Intersect(r, Range("d1")) Is Nothing Then
Range("F5:I12").Select
With Selection
.HorizontalAlignment = xlGeneral
.WrapText = False
.MergeCells = False
End With
Sheets("Feuille_Base").Range("b3").Copy
Sheets("Feuille_réception").Select
Range("F5").Select
ActiveSheet.Paste
Range("F5:I12").Select
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlGeneral
.WrapText = True
.MergeCells = True
End With
End If
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Ce n'est que pour 3 cellules en "Feuille_Base" et dans le fichier dans lequel je veux l'insérer, il y a environ 45 cellules !
Je pense qu'il est possible de raccourcir le code ... peut-être avec une boucle mais je ne sais pas faire.
Auriez-vous le bon code ?
Je joins le fichier test modifié.
Avec mes remerciements,
Amicalement,
lionel,
Pièces jointes
Dernière édition: