Copie de valeurs d'une colonne dans plusieurs lignes sous conditions

  • Initiateur de la discussion Initiateur de la discussion babylonzoo
  • 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 !

B

babylonzoo

Guest
Bonjour,

voici un macro qui me pose un pbs.
je dispose d'un tableau repertoriant des individus appartenant a des goupes (cf résultats). je souhaiterai repartir ces individus dans la fiche "experiment" en separant chaque groupe sur un ligne differente. voici ou j'en suis 😕 impossible de faire decaler les lignes lors de la saisie et de revenir a la premiere lors du changement de groupe

Code:
Option Explicit
Dim A As Integer 'n individu
Dim G As Integer 'n groupe
Dim Nbrow As Byte
Dim i As Byte 'pas
Dim T As Byte 'numero ligne active


Sub copie_individu()
'

'
Worksheets("Résultat").Activate

Nbrow = Application.CountA(Columns("A:A")) - 1
    For i = 0 To Nbrow - 1
    Cells(2 + i, 1).Activate
    A = Range(ActiveCell, ActiveCell).Offset(0, 0).Value
    G = Range(ActiveCell, ActiveCell).Offset(0, 2).Value
    
    Worksheets("Experiment").Activate
    Cells(8 + G, 9).Value = A
    Worksheets("Résultat").Activate
    Next
    
    
End Sub

voir le petit fichier joint si je ne suis pas explicite

merci encore

babylonzoo
 

Pièces jointes

Re : Copie de valeurs d'une colonne dans plusieurs lignes sous conditions

Bonjour le fil, babylonzo

Un essai ...
Code:
Sub copie_individu_2()
    Dim c As Range
    Dim Lig%, Col As Integer
 
    Feuil1.Select
    Lig = [C2] + 8
    Col = 8
 
    For Each c In Range("A2:A" & [A2].End(xlDown).Row)
 
        If c.Offset(, 2) = Lig - 8 Then
            Col = Col + 1
        Else
            Col = 9
            Lig = Lig + 1
        End If
 
        Feuil2.Cells(Lig, Col) = c.Value
    Next
 
End Sub
A plus
 
Re : Copie de valeurs d'une colonne dans plusieurs lignes sous conditions

Bonjour,

Essayez avec votre code corrigé (mais il y a mieux à faire).

Code:
Dim A As Integer 'n individu
Dim G As Integer 'n groupe
Dim Nbrow As Byte
Dim i As Byte 'pas
Dim T As Byte 'numero ligne active

Sub copie_individu()
Dim Col&
Dim Lig&
Col& = 9
Lig& = 9

Worksheets("Résultat").Activate
Nbrow = Application.CountA(Columns("A:A")) - 1
    For i = 0 To Nbrow - 1
    Cells(2 + i, 1).Activate
    A = Range(ActiveCell, ActiveCell).Offset(0, 0).Value
    G = Range(ActiveCell, ActiveCell).Offset(0, 2).Value
    
    Worksheets("Experiment").Activate
    
    If Lig& < 8 + G Then
      Lig& = Lig& + 1
      Col& = 9
    End If
    
    Cells(Lig&, Col&).Value = A
    Col& = Col& + 1
    Worksheets("Résultat").Activate
    Next
End Sub

Cordialement.

PMO
Patrick Morange
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
738
Retour