[excel 2003] de horizontal à verticale

Résolu/Fermé
Signaler
Messages postés
144
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
10 décembre 2014
-
Messages postés
144
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
10 décembre 2014
-
Bonjour,

Pour ceux qui me connaissent, vous verrez bien que ce post fait suite aux autres...
Et encore merci de m'avoir permis se résultat
il ne reste plus grand chose avant la fin ;)

Voila le tableau : http://www.cijoint.fr/cjlink.php?file=cj200807/cij6avDyOp.xls.

il y a en colonne
A le numéro opérateur
B le nom d'une ou plusieurs molécules
C la durée du travail
de D à M reprennent ce qui est dans la colonne B mais en mettant qu'une seule molécule par cellules

et voila ce que j'aimerais avoir a la fin de l'opération
http://www.cijoint.fr/cjlink.php?file=cj200807/cijRIW1z8U.xls.

en fait il faudrais que lorsque la colonne B a plus d'une ligne par cellule rechercher dans les colonne allant de D à M le nombre de cellule non vide (différent de #VALEUR) présente sur cette même ligne (qui correspond aussi au nombre de ligne de ladite cellule)
Exemple en ligne 4 : la cellule B4 à 5 lignes / les cellule D4 E4 F4 G4 et H4 sont non vide / 5 cellules non vides (différente de #VALEUR)

ensuite faudrais ajouter en dessous de la ligne ayant en colonne B une cellule de plusieurs lignes autant de ligne que le chiffre trouver juste avant
ici dans l'exemple il faudrais ajouter 5 lignes

puis, couper coller la premiere cellule non vide (différente de #VALEUR) de la ligne (colonne D) dans la premiere ligne ajouter, la deuxième dans la deuxième, la troisieme dans la troisième et ainsi de suite

enfin faudrais copier coller les donnée de la colonne A de la ligne d'origine vers toutes les ligne insérées et de meme pour la colonne C.

pour obtenir ce qui est en rouge sur le cijoint

2 réponses

Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
308
Salut,
à mon tour d'apporter une petite pierre à la construction de ton fichier. Bravo en tout cas pour ta persévérance depuis une semaine.
Le code ci-dessous devrait répondre à ta demande (très clairement exposée), sans passer par l'étape intermédiaire du découpage des cellules à l'horizontal. Il faut donc supprimer ta fonction Découper, qui n'a plus lieu d'être (ou au moins la mettre en commentaire si tu veux en garder trace).
Bonne continuation !
Sub Traitement()
    Dim i As Integer, NbLigne As Integer, Contenu
    
    Sheets("Feuil1").Activate 'feuille à traiter
    Range("B2").Select 'point de départ
    While ActiveCell.Value <> Empty
        Contenu = Split(ActiveCell.Value, Chr(10))
        NbLigne = UBound(Contenu)
        If NbLigne > 0 Then
            With ActiveCell
                Range(.Offset(1, 0), .Offset(NbLigne, 0)).EntireRow.Insert
                For i = 0 To NbLigne
                    .Offset(i, 0).Value = Contenu(i)
                    .Offset(i, -1).Value = .Offset(0, -1).Value
                    .Offset(i, 1).Value = .Offset(0, 1).Value
                Next i
            End With
        End If
        ActiveCell.Offset(NbLigne + 1, 0).Activate
    Wend
End Sub
Messages postés
144
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
10 décembre 2014
4
c'est trop bien

merci :) beaucoup ;)
Messages postés
144
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
10 décembre 2014
4
plus que deux étape et c'est enfin terminé ;)