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

XL 2016 Répéter le contenu d'une cellule en fonction d'une valeur

Sylvain21

XLDnaute Nouveau
Bonjour à tous,

Voici ma problématique que je n'arrive pas à solutionner :

Je souhaite répéter le contenu d'une cellule dans un certains nombre de cellules adjacentes en fonction d'un nombre de répétition.

En pj une description plus parlante des conditions à respecter.

Par avance merci

Cordialement
Sylvain
 

Pièces jointes

  • répétition.xlsx
    8.6 KB · Affichages: 11

st007

XLDnaute Barbatruc
Bonsoir,
une approche moyennement fonctionnelle, il faut re selectionner la cellule à recopier
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C7:H11")) Is Nothing Then
recopie = Cells(Target.Row, 9).Value
Select Case recopie
Case 0
Exit Sub
Case 1
Target.Offset(, -1) = Target.Value
Case 2
Union(Target.Offset(, -1), Target.Offset(, -2)) = Target.Value
Case 3
Union(Target.Offset(, -1), Target.Offset(, -2), Target.Offset(, -3)) = Target.Value
Case 4
Union(Target.Offset(, -1), Target.Offset(, -2), Target.Offset(, -3), Target.Offset(, -4)) = Target.Value
Case 5
Union(Target.Offset(, -1), Target.Offset(, -2), Target.Offset(, -3), Target.Offset(, -4), Target.Offset(, -5)) = Target.Value
End Select
End If
End Sub
 

Pièces jointes

  • Répétition.xlsm
    15.5 KB · Affichages: 1

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Sylvain21, st007, le forum

Une proposition en fonction personnalisée, compte le nombre de couleurs égales à la couleur de la cellule contenant la fonction.

Cordialement, @+
VB:
Function Nbr_Couleurs(Target As Range)
Dim Cel_Ref As Range, Nb_Coul&
Application.Volatile
For Each Cel_Ref In Target
    If Application.ThisCell.Interior.Color = Cel_Ref.Interior.Color Then Nb_Coul = Nb_Coul + 1
Next
Nbr_Couleurs = Nb_Coul
End Function
 

Pièces jointes

  • répétition.xlsm
    15.1 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonjour Sylvain21, st007, Bernard,

Avec le double-clic :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [A7:H11]) Is Nothing Then Exit Sub 'plage à adapter
Dim prem As Range
Cancel = True
Set prem = Cells(Target.Row, Application.Max(Target.Column - Cells(Target.Row, 9), 1))
Target.Copy Range(prem, Target) 'copier-coller
End Sub
A+
 

Pièces jointes

  • répétition(1).xlsm
    16 KB · Affichages: 5

Discussions similaires

Réponses
6
Affichages
116
Réponses
26
Affichages
415
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…