Erreur dans une boucle en VBA

Résolu/Fermé
goomis95 Messages postés 39 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009 - 19 nov. 2009 à 16:42
goomis95 Messages postés 39 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009 - 20 nov. 2009 à 10:19
Bonjour,
ayant l'idée de simplifier mon code même si il sera plus brut ( simplification dans le nombre de feuille utilisée ) j'ai créer un script mais il ne fonctionne pas du tonnerre puisque que mon code marche normalement sauf la premiere boucle que j'ai incorporé au script que j'essaie de modifier.
Je surligne en gras ou se situe l'erreur : je vous transmet le code ( attention il est plutot grand ).

Sub Sordi()

Dim valeur
Dim comparaison As Byte
Dim tablo
Dim ligne As Byte, compteur_y As Byte, compteur_x As Byte
Dim a, b, c, d As Integer
Dim tableau()

'Ici je met dans la feuille recherche les valeur que je souhaite de la feuille ordi pour ensuite faire une recherche sur la feuille recherche. Ainsi je n'ai pas la necessiter d'avoir un double permanent ( copie_ordi ) contenant simplement les données que je souhaites de la feuille ordi pour mes recherche ce qui rend le document beaucoup plus leger.

Sheets("ordi").Select
b = ActiveSheet.Range("A65356").End(xlUp).Row
For a = 0 To b
Sheets("ordi").Select
tableau(0) = Range("A" & a).Value
tableau(1) = Range("B" & a).Value
tableau(2) = Range("C" & a).Value
tableau(3) = Range("D" & a).Value
tableau(4) = Range("F" & a).Value
tableau(5) = Range("G" & a).Value
tableau(6) = Range("H" & a).Value
tableau(7) = Range("J" & a).Value
tableau(8) = Range("K" & a).Value
tableau(9) = Range("L" & a).Value

'Apparement il ne veut pas de mon Range("A" & a).Value alors qu'il fonctionne tres bien dans d'autre circonstance et le reste du code fonctionne a merveille

Sheets("recherche").Select
d = ActiveSheet.Range("A65356").End(xlUp).Row + 1
For c = 0 To 9
ActiveSheet.Cells(d, (c + 1)) = tableau(c)
Next
Next

sheets("requete de vue").select
valeur = Range("case_user")

If IsEmpty(valeur) Then
MsgBox "Veuillez choisir le nom de la personne ( 1ère lettre du prénom suivi du nom de famille ) pour que la requête fonctionne", vbCritical
Exit Sub
End If

With Sheets("recherche")

comparaison = Application.CountIf(.Columns(1), valeur)
ReDim tablo(comparaison - 1, colonne_user - 1)
ligne = 1

For compteur_y = 0 To UBound(tablo)
ligne = .Columns(1).Find(valeur, .Cells(ligne, 1), xlValues).Row
For compteur_x = 0 To colonne_user - 1
tablo(compteur_y, compteur_x) = .Cells(ligne, compteur_x + 1)
Next
Next
End With

nettoyerSordi
'Fige le défilement de l'écran permettant de ne pas voir le changement de feuille et de rester sur la meme
Application.ScreenUpdating = False

Sheets("requete de vue").Activate
With Range("resultatuser").Resize(comparaison, colonne_user)
.Value = tablo
.Borders.Weight = xlThin
End With

'Selectionne les lignes 18 a 22 et les redimensionne en police 8

Rows("18:22").Select
With Selection.Font
.Name = "Arial"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With

'Selectionne la case I2 , car avec la redimension des lignes juste avant on se retrouve avec ces dites lignes de selectionner
Range("I2").Select

End Sub



Merki beaucoup

3 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 nov. 2009 à 17:41
Bonjour,

La ligne 0 (zéro) n'existe pas ...

Fait avec :

For a = 1 To b
'....

Next a

Ensuite évite de mettre trop de sheet(x).Select ... fait plutôt : tableau(0) = Sheets("ordi").Range("A" & a).Value

Ou bien faire plutôt :
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("ordi")

tableau(0) = ws.Range("A" & a).Value
' ...

;o)
0
goomis95 Messages postés 39 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009
19 nov. 2009 à 18:31
Oki je vais essayer mais effectivement j'avais vu par moi meme que la ligne 0 ne fonctionnait pas et j'avais essayer de rectifier en mettant a = 1 mais ca ne fonctionnait pas plus, pour la suite je vais voir.
0
goomis95 Messages postés 39 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009
20 nov. 2009 à 10:19
J'ai fais ce que tu m'a conseillé mais sans succès :(. Je continue a chercher la raison du bug pour une ligne si simple :).

A au fait j'ai corrigé un peu mon code j'avais oublier de redimensionner mon tableau avec ReDIm tableau(9) maintenant cela fonctionne ... quelle erreur stupide :). Même si j'ai encore du soucis ca doit etre des erreurs d'inatention donc je vais regarder tout ca merci en tout cas pour ton aide.

A+
0