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

XL 2013 Recherche selon critère et transposer des données avec récurrence

MarieChérie

XLDnaute Nouveau
Bonjour à tous !
Je suis ravie d'être ici avec vous, et j'ai grand besoin de votre aide

Un peu plus d'une semaine que je bloque sur code qui commence à me rendre folle ! Mes années VBA sont loin derrière moi, et j'ai, de toute évidence, un peu de mal à me remettre dedans, depuis que je suis passé à Python... à mon grand dépit !

Bref,

J'ai deux principaux soucis sur mon code :

- Le premier : Je souhaite supprimer toutes ces lignes de dates/heures. Je pensai créer une recherche de critère et effacer en fonction de la sélection, mais sans grand succès.
- Le second : J'ai besoin de transposer ces données, actuellement uniquement en colonne A, sur diverses colonnes, dans le sens où les informations sont données.
VB:
Sub ROK()

        Dim feuille As Worksheet
        Dim formules_modèles As Range
        Dim nom As String
        Dim Fichiertxt As Variant

   Sheets.Add after:=Sheets(Sheets.Count)
    Set feuille = ActiveSheet

        Fichiertxt = Application.GetOpenFilename("Text Files (*.txt), *.txt")
        If Fichiertxt <> False Then
            With feuille.QueryTables.Add(Connection:="TEXT;" & Fichiertxt, Destination:=Range("$A$5"))
                .Name = nom
                .FieldNames = True
                .PreserveFormatting = True
                .SaveData = True
                .AdjustColumnWidth = True
                .TextFileStartRow = 2
                .TextFileParseType = xlDelimited
                .TextFileSemicolonDelimiter = True
                .Refresh BackgroundQuery:=False
            End With
        End If
 
  
  
     Dim xRow As Long    ' 1 to 10000
    Dim xCol As Long    ' 1 to 5 (de G à D)
    Dim dRow As Long    ' Destination
    Dim x As Integer
    Dim FinalCount As Integer
    Debug.Print Now
    
    dRow = 4
    FinalCount = Application.WorksheetFunction.CountA(Feuil1.Range("$A:$A"))
    Range("$A:$A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    
    Dim Plage As Range
    Dim CL As Integer
    Dim LM As String
    LM = "=="
    CL = 1
    Set Plage = Cells(2, 1).Resize(UsedRange.Rows.Count - 1, UsedRange.Columns.Count)
     With Range("A1")
            .AutoFilter
            .AutoFilter CL, LM
            On Error Resume Next
            
                Plage.SpecialCells(xlCellTypeVisible).EntireRow.Delete
            On Error GoTo 0
      
            .AutoFilter
    End With
    
    x = 20
    For A = 1 To FinalCount Step x
    For xRow = 1 To x Step 1
        For xCol = 2 To x
        Cells(dRow, xCol) = Cells(xRow, 1)
        dRow = dRow + 1
        Next xCol
    Next xRow
    Next A
    Debug.Print Now
    
    
End Sub

J'ai bien évidemment fait le tour de mes bouquins et de quelques forums, mais aucune idée ne vient.
Je vous joins le fichier texte en question et un fichier xls comprenant les données en colonne A et le format attendu à côté

Un grand merci pour votre aide et votre patience !

Bonne journée à vous,

Marie
 

Pièces jointes

  • Classeur1 (Enregistré automatiquement).xlsx
    61.3 KB · Affichages: 4
  • hbjkl.txt
    974 bytes · Affichages: 3
Solution
Bonjour, n'étant pas une bête en vba, j'ai raisonné comme suit:
Obtenir les données depuis csv
séparateur tabulation
remplacer "=" par rien
charger les données
un tableau structuré en feuil2 à 1 colonne
créé une colonne B avec comme formule =Dateval[@Column1@]
filtré le tableau sur #valeurs en colonne 2
copier transposer la colonne1 dans ton tableau par pas de 10

st007

XLDnaute Barbatruc
Bonjour, n'étant pas une bête en vba, j'ai raisonné comme suit:
Obtenir les données depuis csv
séparateur tabulation
remplacer "=" par rien
charger les données
un tableau structuré en feuil2 à 1 colonne
créé une colonne B avec comme formule =Dateval[@Column1@]
filtré le tableau sur #valeurs en colonne 2
copier transposer la colonne1 dans ton tableau par pas de 10
 

MarieChérie

XLDnaute Nouveau
Bonjour st007 !
Je te remercie pour ton retour,
Comme c'est une méthodologie qui sera utilisée toutes les deux à trois semaines, plus recharge ponctuelle, je me suis orientée vers du vba, de plus les données à ressortir peuvent varier entre 20 et 50.

Pour autant, les méthodes classiques sont parfois les meilleures, je vais essayer d'utiliser ta méthode !

Encore un grand merci pour ton temps et ton aide
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…