XL 2021 Incrémentation

  • Initiateur de la discussion Initiateur de la discussion Sanni
  • Date de début Date de début

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 !

Sanni

XLDnaute Junior
Bonjour à tous !
J'ai préoccupation sur l'incrémentation sur Excel. La colonne B contient des nombres, je voudrais récupérer successivement ces nombres dans la colonne D tout en laissant 03 lignes vides sur cette colonne D, mais l'ordre de la colonne B doit être respecté sur la colonne de récupération (D). Le fichier en pièce jointe peut aider à comprendre. Si possible avec une formule. Merci
 

Pièces jointes

Solution
Regarde le code ci-dessous: j'ai mis des commentaires==> tu peux donc adapter à ton besoin
VB:
Sub Redistrib()
Dim TabInit() As Variant 'déclaration du tableau des données à traiter
Dim TabFinal() As Variant 'déclaration du tableau de résultat
Dim Pas As Long 'déclaration du pas

    Pas = 4 'on définit le pas à 4
    With Sheets("Feuil1") 'avec la feuille 1
        TabInit = .Range("B3").CurrentRegion.Value 'on met les données dans le tablo
        ReDim TabFinal(1 To Pas * UBound(TabInit, 1), 1 To 1) 'on dimensionne le tableau final
        
        For i = LBound(TabInit, 1) To UBound(TabInit, 1) 'pour chaque ligne du tableau init
            TabFinal((i - 1) * Pas + 1, 1) = TabInit(i, 1) 'on place la donnée à la bonne position dans...
Hello

en PJ, une solution par formules avec colonnes intermédiaires
et une solution par VBA (clic bouton)
Réponse bien reçue, merci à vous. Quelle sera la modification sur le code VBA si la source des données était désormais sur la "Feuil2" et que la récupération restera toujours sur la "Feuil1"?
 

Pièces jointes

Bonjour Sanni, Vgendron,
Un essai en PJ avec :
VB:
=SI((LIGNE()+9)/4=ENT((LIGNE()+9)/4);INDEX(B:B;(LIGNE()+9)/4);"")
et si les données sont en feuille 2 c'est pareil :
Code:
=SI((LIGNE()+9)/4=ENT((LIGNE()+9)/4);INDEX(Feuil2!B:B;(LIGNE()+9)/4);"")
 

Pièces jointes

Regarde le code ci-dessous: j'ai mis des commentaires==> tu peux donc adapter à ton besoin
VB:
Sub Redistrib()
Dim TabInit() As Variant 'déclaration du tableau des données à traiter
Dim TabFinal() As Variant 'déclaration du tableau de résultat
Dim Pas As Long 'déclaration du pas

    Pas = 4 'on définit le pas à 4
    With Sheets("Feuil1") 'avec la feuille 1
        TabInit = .Range("B3").CurrentRegion.Value 'on met les données dans le tablo
        ReDim TabFinal(1 To Pas * UBound(TabInit, 1), 1 To 1) 'on dimensionne le tableau final
        
        For i = LBound(TabInit, 1) To UBound(TabInit, 1) 'pour chaque ligne du tableau init
            TabFinal((i - 1) * Pas + 1, 1) = TabInit(i, 1) 'on place la donnée à la bonne position dans le tableau final
        Next i
    End With
    
    With Sheets("Feuil2") 'dans la feuille 2
        .Range("A3").Resize(UBound(TabFinal, 1), UBound(TabFinal, 2)) = TabFinal 'on place le tableau de résultat à partir de A3
    End With
End Sub
 
Bonsoir à tous.
J'ai une autre préoccupation, toujours sur le mème sujet.
Je voudrais récupérer les données des colonnes "C", "F" et "G" de la feuille "LISTE ARTICLES" respectivement sur les colonnes "A", "B" et "C" de la feuille "7" tout en sautant 03 lignes avant l'incrémentation. Le fichier en pièce jointe peut aider à comprendre. Merci
 

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
7
Affichages
110
Réponses
3
Affichages
431
Réponses
1
Affichages
240
Retour