XL 2010 Copier N fois une valeur V dans une colonne donnée

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

anthony.unac

XLDnaute Occasionnel
Bonjour,

Le but est de copier N fois une valeur V dans une colonne donnée.
Soit une colonne A composée de mettons 10 valeurs (de A1 à A10)
Soit une colonne B composée de 10 valeurs également (de B1 à B10)
Dans la colonne C, est il possible de coller la valeur A1 (B1 fois c'est à dire que C1=A1, C2=A1, C3=A1 etc ... jusqu'à C_B1=A1). Juste en dessous de cette dernière cellule coller la valeur A2 (B2 fois c'est à dire C_B1+1=A2, C_B1+2=A2, C_B1+3=A2 etc ... jusqu'à C_B1+B2=A2) et ainsi de suite pour former une colonne C remplie d'occurences.

Cordialement
Anthony CANU
 
Après test, on constate que la colonne se finit par des séquences #N/A.
J'ai tenté de m'en débarrasser en modifiant vos formules (voir fichier joint) mais du coup la colonne se finit par 0 tout le temps et je ne parviens pas à m'en débarrasser. Dans l'idéal, il faudrait que la colonne finisse par "rien" ="" mais sans le zéro final 🙁
 

Pièces jointes

Bonjour le forum,
Bonjour anthony.unac,


A tester en "F3"
Code:
=SIERREUR(SI(SI(NB.SI(F$2:F2;F2)=INDEX(B:B;EQUIV(F2;A:A;0));INDEX(A:A;EQUIV(F2;A:A;0)+1);F2)=0;"";SI(NB.SI(F$2:F2;F2)=INDEX(B:B;EQUIV(F2;A:A;0));INDEX(A:A;EQUIV(F2;A:A;0)+1);F2));"")
Tirer vers le bas autant que nécessaire.

Où en "F3"
Code:
=SIERREUR(SI(NB.SI(F$2:F2;F2)=INDEX(B:B;EQUIV(F2;A:A;0));INDEX(A:A;EQUIV(F2;A:A;0)+1);F2);"")
Puis clique droit => Format de cellule => Personnalisée => et dans Type
Mettre Standard
Code:
Standard;;
Tirer vers le bas autant que nécessaire.
Cordialement.
 
Bonjour le Forum,
Bonjour Anthony.unac, Job75, mdo100

Dans la série pourquoi faire simple quand on peut faire compliqué et pour faire rire Job75 et mdo100 a tester en F3 et à étirer vers le bas

Code:
=SIERREUR(SI(NB.SI(F$2:F2;F2)<INDEX(B:B;EQUIV(F2;A:A;0));F2;INDEX(A:A;EQUIV(F2;A:A;0)+(SI(INDEX(B:B;EQUIV(F2;A:A;0)+1)=0;2;1))));"")

Cordialement
 
Re,

Bien entendu avec VBA on fait tout ce qu'on veut, le code de la feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim t, a$, resu(), i&, j&, x, k&, n&
Application.EnableEvents = False 'désactive les évènements
With UsedRange
    t = .Columns(1).Resize(, 2) 'matrice, plus rapise
    a = .Columns(2).Address
    ReDim resu(1 To Evaluate("SUM(IF(ISNUMBER(" & a & "),INT(" & a & ")))"), 1 To 1)
    For i = 1 To UBound(t)
        j = Int(Val(t(i, 2)))
        x = t(i, 1)
        For k = 1 To j
            n = n + 1
            resu(n, 1) = x
    Next k, i
    If n Then
        .Columns(6).Resize(n) = resu 'restitution
        .Columns(6).Resize(n).Interior.ColorIndex = 6 'jaune
    End If
    .Cells(n + 1, 6).Resize(Rows.Count - n - .Row + 1).Clear 'RAZ en dessous
End With
With UsedRange: End With 'actualise la barre de défilement verticale
Application.EnableEvents = True 'réactive les évènements
End Sub
Fichier .xlsm joint.

A+
 

Pièces jointes

Vous avez effectivement neutralisé l'ensemble des cas de figure problématiques et je compte bien l'adapter à ma feuille.
Dans cette dernière :
la colonne A devient la colonne B (Estimations)
la colonne B devient la colonne E (Crédibilité)
la colonne F devient la colonne G (data)
Du coup, j'ai essayé de modifier votre code et notamment les indices de colonne (columns(x)) comme ceci :

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim t, a$, resu(), i&, j&, x, k&, n&
Application.EnableEvents = False 'désactive les évènements
With UsedRange
    t = .Columns(2).Resize(, 2) 'matrice, plus rapise
    a = .Columns(5).Address
    ReDim resu(1 To Evaluate("SUM(IF(ISNUMBER(" & a & "),INT(" & a & ")))"), 1 To 1)
    For i = 1 To UBound(t)
        j = Int(Val(t(i, 2)))
        x = t(i, 1)
        For k = 1 To j
            n = n + 1
            resu(n, 1) = x
    Next k, i
    If n Then
        .Columns(7).Resize(n) = resu 'restitution
        .Columns(7).Resize(n).Interior.ColorIndex = 7 'jaune
    End If
    .Cells(n + 1, 7).Resize(Rows.Count - n - .Row + 1).Clear 'RAZ en dessous
End With
With UsedRange: End With 'actualise la barre de défilement verticale
Application.EnableEvents = True 'réactive les évènements
End Sub

Mais j'ai du oublié des modifications, pouvez vous m'aider à l'aide du fichier joint.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
270
Réponses
5
Affichages
235
Retour