Sly le globe trotter
XLDnaute Occasionnel
Bonsoir à tous,
Une conversation ayant quasiment le même titre existe actuellement mais en parcourant la discussion, je constate que le sujet n'est pas le même. Je suis à la recherche comme vous vous en doutez d'un peu d'aide pour un souci étonnant.
J'ai récupéré dans ma boîte un code VBA Excel qui fonctionne très bien depuis plusieurs années. Sauf que depuis quelques jours, cela déraille sur plusieurs postes, avec toujours les mêmes symptômes !
Voici le code que j'ai allégé, il est beaucoup plus long... Je partage ici la boucle où se passe l'erreur.
Lors du premier passage dans cette boucle, la condition
est vraie et je créée un tableau vide par l'intermédiaire des 2 lignes de codes suivantes
Lors du second passage, la condition précédente est fausse et je cherche juste à insérer une ligne dans le tableau précédemment créé avec le code suivant
Le hic c'est qu'à présent au lieu d'insérer une ligne, est inséré à nouveau le tableau initial... Comme si Excel avait gardé en mémoire les données copiées précédemment.
Difficile de joindre un fichier exemple tant le fichier est complexe et pointant sur des bases de données externes. J'espère cependant que vous aurez des pistes pour m'aider à faire évoluer ce code, qui a fonctionné pendant plusieurs années, pour différents utilisateurs, sur différents postes...
D'avance merci,
Sly
Une conversation ayant quasiment le même titre existe actuellement mais en parcourant la discussion, je constate que le sujet n'est pas le même. Je suis à la recherche comme vous vous en doutez d'un peu d'aide pour un souci étonnant.
J'ai récupéré dans ma boîte un code VBA Excel qui fonctionne très bien depuis plusieurs années. Sauf que depuis quelques jours, cela déraille sur plusieurs postes, avec toujours les mêmes symptômes !
Voici le code que j'ai allégé, il est beaucoup plus long... Je partage ici la boucle où se passe l'erreur.
Code:
'Ecriture des données
i = 1
While Not rst.EOF
'teste le lay-up courant: si nouveau, on copie un nouveau lay-up modèle qu'on va remplir ensuite
If strLayUpCur <> Trim(rst.Fields(LAYUP).Value) Or strLayUpCur = vbNullString Then
'si layup déjà inséré, on finit sa mise en forme avant d'en insérer un autre
If i > nbLignesAvantRaq Then
'on supprime la dernière ligne raquette vide (ligne courante)
Rows(i).Delete
'affichage des bordures des lignes raquette
With Range(Cells(i - 1, nbColVidesDebut + 1), Cells(i - 1, nbColVidesDebut + nbColModele))
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeBottom).ColorIndex = 0
.Borders(xlEdgeBottom).TintAndShade = 0
.Borders(xlEdgeBottom).Weight = xlMedium
End With
'on se positionne après le layup
i = i + nbLignesStat
End If
'ajout d'un nouveau layup modèle sur la feuille courante
Workbooks(strNomFichierCourant).Sheets(strNomFeuilleModele).Rows("1:" & CStr(nbLignesModele)).Copy
Workbooks(strNomFichier).Sheets(strNomFeuille).Rows(i).Insert Shift:=xlDown
'incrémentation des lignes due à l'insertion du nouveau modèle
'on se positionne à la première ligne raquette du layup
i = i + nbLignesAvantRaq
'sauvegarde du lay-up courant
If rst.Fields(LAYUP).Value <> "" Then
strLayUpCur = Trim(rst.Fields(LAYUP).Value)
Else
strLayUpCur = ""
End If
'on cache les lignes de seuil du lay-up
Rows(i + nbLignesVidesRaq - 1 + ligStatsSeuil1).EntireRow.Hidden = True
Rows(i + nbLignesVidesRaq - 1 + ligStatsSeuil2).EntireRow.Hidden = True
Else
'insertion d'une ligne avant la derniere ligne raquette
' XXXXXXXXXXXXXXXle problème vient de la ligne suivante XXXXXXXXXXXXXXXXXXXXXXX
Rows(i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
'position sur la dernière raquette du layup
i = i + 1
'raquette suivante
rst.MoveNext
Wend
Lors du premier passage dans cette boucle, la condition
Code:
If strLayUpCur <> Trim(rst.Fields(LAYUP).Value) Or strLayUpCur = vbNullString Then
Code:
'ajout d'un nouveau layup modèle sur la feuille courante
Workbooks(strNomFichierCourant).Sheets(strNomFeuilleModele).Rows("1:" & CStr(nbLignesModele)).Copy
Workbooks(strNomFichier).Sheets(strNomFeuille).Rows(i).Insert Shift:=xlDown
Lors du second passage, la condition précédente est fausse et je cherche juste à insérer une ligne dans le tableau précédemment créé avec le code suivant
Code:
'insertion d'une ligne avant la derniere ligne raquette
Rows(i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Le hic c'est qu'à présent au lieu d'insérer une ligne, est inséré à nouveau le tableau initial... Comme si Excel avait gardé en mémoire les données copiées précédemment.
Difficile de joindre un fichier exemple tant le fichier est complexe et pointant sur des bases de données externes. J'espère cependant que vous aurez des pistes pour m'aider à faire évoluer ce code, qui a fonctionné pendant plusieurs années, pour différents utilisateurs, sur différents postes...
D'avance merci,
Sly