Erreur d'execution 91

Re-bonjour,

Comme ce matin vous m'avez beaucoup aide, je reviens vers vous pour une petite question...

Voici mon programme qu'un de vos collègues m'a aidé à faire, mais je l'ai un peu modifié. En effet, je souhaite pouvoir trier un tableau (qui est sur 8 colonnes) en une colonne (mais en prenant lisant le tableau de gauche à droite, puis en passant à la ligne suivante).

Sub test()

Dim re As Range

Dim pl As Range

Dim dl As Range

Dim destl As Range

Dim j As Integer

Dim i As Integer

Set re = Range("A:A").Find("Accelerogram points", lookat:=xlPart)

If re Is Nothing Then MsgBox "text Accelerogram non trouvé": Exit Sub

pl = re.Row + 1 'première ligne de données

dl = Cells(Rows.Count, 1).End(xlUp).Row 'dernière ligne de données

destl = dl ' 1ere ligne de destination des données pour les colonnes à copier

Range(Cells(pl, 1), Cells(dl, 1)).TextToColumns Destination:=Cells(pl, 1), DataType:=xlFixedWidth ' on sépare les données en colonnes

For i = pl To dl

For j = 2 To 8 'on copie les colonnes sous la colonne A

Range(Cells(i, j), Cells(i, j)).Copy Cells(destl + 1, 1)

destl = Cells(Rows.Count, 1).End(xlUp).Row

Next

Next

Range(Cells(pl, 2), Cells(dl, 8)).Delete shift:=xlToLeft ' on supprime les colonnes inutiles

End Sub

Excel me donne la fameuse erreur d'éxecution 91, mais je n'ai pas de "with" dans mon programme...

Si vous pouvez m'expliquer

Merci beaucoup d'avance !

Bonjour,

A priori ta définition des variables n'est pas tout à fait exacte ...

Il faudrait tester ...

Dim pl As Integer
Dim dl As Integer
Dim destl As Integer

Merci beaucoup, ça doit être ça !

En revanche le programme ne fait pas vraiment ce que je veux... C'est à dire que j'aimerai qu'il me réécrit le tableau de 8 colonnes en 1 colonnes de gauche à droite... Par exemple :

.000190 .000182 .000187 .000181 .000183 .000187 .000184 .000191

.000184 .000182 .000184 .000185 .000190 .000185 .000192 .000187

deviant :

.000190

.000182

.000187

.000183

.000184

.000191

.000184

.000182

.000184

etc...

Peux tu m'aider encore ?

Merci d'avance !

re-Bonjour,

quel est l'intérêt de prendre les données dans un ordre particulier pour les mettre dans une seule colonne, si par après il faut trier cette colonne ?

Il ne faut pas trier la colonne par après justement, c'est pour cela que j'ai efface une des lignes de ton code

(Je m'excuse d'ailleurs de ne pas avoir été trop comprehensible ce matin... )

En quelques sortes ces valeurs me servent à créer par après une courbe (d'où l'importance d'avoir le bon ordre)

re bonjour,

voici une version adaptée, à tester.

Sub test()
    Application.ScreenUpdating = False
    Set re = Range("A:A").Find("Accelerogram points", lookat:=xlPart)
    If re Is Nothing Then MsgBox "text Accelerogram non trouvé": Exit Sub
    pl = re.Row + 1    'première ligne de données
    dl = Cells(Rows.Count, 1).End(xlUp).Row    'dernière ligne de données
    destl = dl + 1    ' 1ere ligne de destination des données pour les colonnes à copier
    Range(Cells(pl, 1), Cells(dl, 1)).TextToColumns Destination:=Cells(pl, 1), DataType:=xlFixedWidth    ' on sépare les données en colonnes
    For i = pl To dl
        Application.StatusBar = Format(i / dl, "0.00%")
        DoEvents
        Range(Cells(i, 1), Cells(i, 8)).Copy
        Cells(destl, 1).PasteSpecial Transpose:=True
        destl = destl + 8
    Next
    Range(Cells(pl, 1), Cells(dl, 8)).Delete shift:=xlUp    ' on supprime les lignes inutiles
    Application.ScreenUpdating = True
End Sub
Rechercher des sujets similaires à "erreur execution"