Insertion de lignes vides dans Variable tableau VBA

re,

je fais ce truc en 0.05 sec (< marge d'erreur) vers un combobox d'un userform. Donc ce n'est pas que personne vous comprend, c'est vous qui ne veut pas voir la solution.

Global Arr, t
Sub Tres_Tres_Simple()
     t = Timer
     With Range("A6").CurrentRegion     'la plage autour de A6
          Set c = .Offset(1).Resize(.Rows.Count - 1, 2)     'la même plage 2 colonnes, sauf les entêtes
     End With

     With Range("D7").Resize(c.Rows.Count, c.Columns.Count)    'plage de destination = mêm feuille cellule "D7" en haut et gauche
          .Resize(.Rows.Count * 2).ClearContents     'effacer le double des lignes, précaution

     'premier partie = sorter la plage dans une autre plage
          .Value = c.Value     'copier les valeur
          .Sort .Range("A1"), xlAscending, Header:=xlNo     'sorter sans entêtes, la 1ière colonne, croissant

     'deuxieme partie = insérer des lignes
          If False Then
     'méthode 1 : rester dans la feuille et insérer des lignes
               For i = .Rows.Count - 1 To 1 Step -1     'boucle de bas en haut
                    If .Cells(i, 1).Value <> .Cells(i + 1, 1).Value Then .Offset(i).Resize(1).Insert shift:=xlDown     'si N° Compte différent, insérer
               Next
               Arr = .Value    'la plage avec les lignes inseré

         Else
     'méthode 2 : lire les données (avec une ligne supplémentaire vide) dans la matrice Arr0, puis determiner la sequence des lignes, puis construire la matrice désirée
               arr0 = .Resize(.Rows.Count + 1).Value     'lire avec une ligne supplémentaire vide
               For i = 1 To UBound(arr0) - 1     'boucle les lignes
                    If old <> arr0(i, 2) And i <> 1 Then s = s & vbLf & UBound(arr0)     'détecter changement (dans la 2ième colonne) = ajouter le numéro de la ligne vide dans la matrice Arr0
                    old = arr0(i, 2)     'mémoriser ce valeur
                    s = s & vbLf & i     'ajouter le numéro de cette ligne de la matrice
               Next
               MsgBox "la sequence des lignes à copier de Arr0 vers Arr sera : " & s
               Lignes = Application.Transpose(Split(Mid(s, 2), vbLf))     'préparer cette sequence dans une matrice 2D
               Arr = Application.Index(arr0, Lignes, Array(1, 2))

          End If
     End With

     UserForm1.Show
End Sub
61664.xlsb (39.12 Ko)

(proposition : donnez-moi de nouveau une vote négative )

En fait je veux que tout se fait en mémoire pas sur la feuille. De deux ce code je n'y comprends rien il doit sûrement y avoir de plus court et facile. Comme j'ai fait pour le tri dans la variable tableau même. Mais merci pour tout BsAlv pour votre appui :)

je ne comprends pas grand chose d'un moteur à combustion, mais quand même je roule en voiture. Si vous avez une matrice et un moment donné, on vous dit de cette matrice, prenez la ligne 10, 4, 7, 6, 3, 8, ... et ce truc fonctionne, alors tu 'en fou ...

Cher BsAlv merci beaucoup :)

Je reviens au plus vite pour vous poser le code que j'aurais appliqué et compris dans ce même poste :)

HeSo4 merci beaucoup c'est exactement ça dont j'ai besoin :)

Il est un peu facile à comprendre ... je dis un peu car je suis encore novice en vba et encore moins dans des manoeuvres des variables tableau.

Si vous pouvez m'expliquer plus les étapes en rédigeant du texte ça sera chouette :)

Sinon il y a qlq chose qui cloche : la première ligne affichée sur la Feuil du résultat est la deuxième ligne de la variable tableau c'est a dire 3-----b au lieu de la première qui est 1--------a !

Peut être que cette rectification m'aidera à comprendre un des côtés de ce code.

Merci :) Week-end sauvé !!!

Rechercher des sujets similaires à "insertion lignes vides variable tableau vba"