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

XL 2013 Insertion de lignes en fonction d'un certain nombre de sites

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 !

scamanto024

XLDnaute Nouveau
Bonjour Team,

Je sollicite votre aide svp pour m'aider à mettre en place une macro qui rajoute des lignes en fonction du nombre de site, sur le fichier joint j'ai mis les données à l'état brute (feuille source) ainsi que la version cible:

Chaque cellule de la colonne B contient des sites que je dois décortiquer avant de pouvoir mettre chaque site dans une ligne et copier les autres infos ( N° Ticket, desc, Date...).

PS: les sites ont le format "XXX-1234"

Merci d'avance pour votre aide

Cordialement
 

Pièces jointes

Re : Insertion de lignes en fonction d'un certain nombre de sites

bonjour scamanto024,

une solution possible à tester:

Code:
MacroPaf()
 Dim DerL As Long, i As Long, Tabini, TabFin(), TabTemp, Deb As Byte
 Dim MaChaine As String, j As Integer, x As Long
 Dim FS As Worksheet, FC As Worksheet

 Set FS = Worksheets("Source") ' à adapter
 Set FC = Worksheets("Cible") ' à adapter

 DerL = FS.Range("A" & Rows.Count).End(xlUp).Row
 '** passage des dates au format standard pour éviter les pb format date US
 FS.Range("I2:K" & DerL).NumberFormat = "General"
 Tabini = FS.Range("A2:N" & DerL)
 For i = LBound(Tabini) To UBound(Tabini)
    Deb = InStr(Tabini(i, 2), "sur")
    MaChaine = Replace(Right(Tabini(i, 2), Len(Tabini(i, 2)) - Deb - 3), " ", "")
    TabTemp = Split(MaChaine, ",")
    For j = LBound(TabTemp) To UBound(TabTemp)
        x = x + 1
        ReDim Preserve TabFin(1 To UBound(Tabini, 2), 1 To x)
        For k = LBound(Tabini, 2) To UBound(Tabini, 2) - 1
            TabFin(k, x) = Tabini(i, k)
        Next
        TabFin(k, x) = TabTemp(j)
    Next
 Next
 FS.Range("I2:K" & DerL).NumberFormat = "m/d/yyyy h:mm"
 FS.Range("A1:N1").Copy FC.Range("A1")
 FC.Range("A2").Resize(UBound(TabFin, 2), UBound(TabFin, 1)) = Application.Transpose(TabFin)
 FC.Columns("I:K").NumberFormat = "m/d/yyyy h:mm"
End Sub

A+
 
Dernière édition:
Re : Insertion de lignes en fonction d'un certain nombre de sites

reBonjour,

J'ai une petite contrainte que j'ai mal renseigné sur l'exemple joint au 1er message, c'est que la description des alarmes n'est pas forcément standardisé, de ce fait, ça serait pas possible de se baser sur un mot clé 🙁 🙁

J'ai mis une 2ème jointure avec des descriptions d'incidents differentes.

Merci bcp pour votre aide

Cordialement
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…