La même macro fonctionne sur un de mes PC et pas sur l'autre
Michel
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dispose d'un petit programme de comptabilité dans lequel Il y a 2 classeurs: un qui s'appelle ("Application Compta") qui contient la feuille ("Structure") et l'autre qui s'appelle (Fichier_Compta) et qui contient les feuilles (Journal). La partie de programme incriminée est celle qui compare le nombre de lignes dans les journaux successifs avec les valeurs indiquée dans "Structure". voir ci dessous:
For Ind = PLigneJour + 1 To DerJournal
Windows("Application Compta.xls").Activate
Sheets("Structure").Select
Range("A" & Ind).Select
Journal = ActiveCell.Value
Range("B" & Ind).Select
DerLigneJournStructure = ActiveCell.Value
Windows(Fichier_Compta).Activate
Sheets(Journal).Select
Range("A1").Select
Selection.End(xlDown).Select
DerLigneJournal = ActiveCell.Row
If DerLigneJournal <> DerLigneJournStructure Then
MsgBox ("INCOHERENCE SUR JOURNAL " & Journal & _
" Nombre de Lignes trouvé dans STRUCTURE = " _
& DerLigneJournStructure)
Exit Sub
End If
Dans l'un de mes PC équipé de XCell 2007,ça marche OK.
Dans l'autre , équipé de XCell 2013, cela plante. Quand je fais le déboggage pas à pas, la différence apparait à la ligne " Range("A1").Select". Tout ce passe comme si ce n'était pas la cellule A1 de la feuille (Journal) qui était selectionnée, mais la cellule A1 de "Structure".
Comment consolider cette routine pour éviter cette divergence?
Merci de votre aide
Je dispose d'un petit programme de comptabilité dans lequel Il y a 2 classeurs: un qui s'appelle ("Application Compta") qui contient la feuille ("Structure") et l'autre qui s'appelle (Fichier_Compta) et qui contient les feuilles (Journal). La partie de programme incriminée est celle qui compare le nombre de lignes dans les journaux successifs avec les valeurs indiquée dans "Structure". voir ci dessous:
For Ind = PLigneJour + 1 To DerJournal
Windows("Application Compta.xls").Activate
Sheets("Structure").Select
Range("A" & Ind).Select
Journal = ActiveCell.Value
Range("B" & Ind).Select
DerLigneJournStructure = ActiveCell.Value
Windows(Fichier_Compta).Activate
Sheets(Journal).Select
Range("A1").Select
Selection.End(xlDown).Select
DerLigneJournal = ActiveCell.Row
If DerLigneJournal <> DerLigneJournStructure Then
MsgBox ("INCOHERENCE SUR JOURNAL " & Journal & _
" Nombre de Lignes trouvé dans STRUCTURE = " _
& DerLigneJournStructure)
Exit Sub
End If
Dans l'un de mes PC équipé de XCell 2007,ça marche OK.
Dans l'autre , équipé de XCell 2013, cela plante. Quand je fais le déboggage pas à pas, la différence apparait à la ligne " Range("A1").Select". Tout ce passe comme si ce n'était pas la cellule A1 de la feuille (Journal) qui était selectionnée, mais la cellule A1 de "Structure".
Comment consolider cette routine pour éviter cette divergence?
Merci de votre aide
A voir également:
- La même macro fonctionne sur un de mes PC et pas sur l'autre
- Réinitialiser un pc - Guide
- Télécharger musique gratuitement sur pc - Télécharger - Conversion & Extraction
- Plus de son sur mon pc - Guide
- Lire epub sur pc - Guide
- Test performance pc - Guide
6 réponses
le fichier compta se trouve bien sur l'autres ordinateur ? et peut être que excel 2013 ne fonctionne pas pareille que 2007 car vba c'est inutilisé si je me souviens bien
Martin Baio
Oui tout-a fait. Les deux fichiers sont des copies conformes. Dans une partie précédente du programme on teste l'ouverture du classeur Compta pour bien vérifier sa présence. Je dois précisé qu'il est ouvert lors de cette cette routine.
Bonjour,
excel2013
voir la remarque faite pur utilisatin de la cellule active:
https://docs.microsoft.com/fr-fr/office/vba/excel/concepts/cells-and-ranges/working-with-the-active-cell?redirectedfrom=MSDN
Bonne suite
excel2013
voir la remarque faite pur utilisatin de la cellule active:
https://docs.microsoft.com/fr-fr/office/vba/excel/concepts/cells-and-ranges/working-with-the-active-cell?redirectedfrom=MSDN
Bonne suite
Merci pour votre réponse, j'ai bien enregistré la remarque.
C'est la ligne
Windows(Fichier_Compta).Activate
qui pose problème.
Dans l'un de mes PC, (Fichier_Compta) qui est un nom indirect, s'active bien et le programme marche bien.
Dans l'autre PC, (Fichier_Compta) ne s'active pas, bien que tout soit identique jusqu'à ce moment là.
Mais quand je remplace (Fichier_Compta) par son nom d'origine("COMPTA13.xls"), le programme fonctionne bien, quelque soit le PC.
J'ai essayé le programme sur d'autres PC équipés de Excell 2007 sur Vista, Dans certains ça marche , dans d'autres pas!
Je ne suis pas un expert de la programmation et je vais surement dire un bêtise: j'ai l'impression que sur des PC "rapides" ça ne marche pas et que sur des PC lents ça marche.
J'ai résolu le PB sans comprendre, j'en suite quitte pour changer chaque année le nom du fichier d'origine dans le programme "COMPTA13", "COMPTA14" etc, ce qui n'est pas très élégant.
Mais toute explication définitive serait la bienvenue.
Encore merci
C'est la ligne
Windows(Fichier_Compta).Activate
qui pose problème.
Dans l'un de mes PC, (Fichier_Compta) qui est un nom indirect, s'active bien et le programme marche bien.
Dans l'autre PC, (Fichier_Compta) ne s'active pas, bien que tout soit identique jusqu'à ce moment là.
Mais quand je remplace (Fichier_Compta) par son nom d'origine("COMPTA13.xls"), le programme fonctionne bien, quelque soit le PC.
J'ai essayé le programme sur d'autres PC équipés de Excell 2007 sur Vista, Dans certains ça marche , dans d'autres pas!
Je ne suis pas un expert de la programmation et je vais surement dire un bêtise: j'ai l'impression que sur des PC "rapides" ça ne marche pas et que sur des PC lents ça marche.
J'ai résolu le PB sans comprendre, j'en suite quitte pour changer chaque année le nom du fichier d'origine dans le programme "COMPTA13", "COMPTA14" etc, ce qui n'est pas très élégant.
Mais toute explication définitive serait la bienvenue.
Encore merci
Bonjour,
Plusieurs remarques ou pistes
1°) tu peu remplacer les trois lignes..
par
ou
C'est la même chose mais en plus simple.
2°) essaye en mettant
au lieu de Windows.
Et si ça va pas essaye avec un objet
Tu peu t'en servir simplement..
Si pas solutionner.. Fichier_Compta est toujours dans le même répertoire ?
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Plusieurs remarques ou pistes
1°) tu peu remplacer les trois lignes..
Range("A1").Select Selection.End(xlDown).Select DerLigneJournal = ActiveCell.RowSheets(Journal).Select
par
DerLigneJournal = Cells(Rows.Count, 1).End(xlUp).Row
ou
DerLigneJournal = Cells(1, 1).End(xlDown).Row
C'est la même chose mais en plus simple.
2°) essaye en mettant
WorkBooks(Fichier_Compta).Activate
au lieu de Windows.
Et si ça va pas essaye avec un objet
Dim Fichier_Compta as WorkBook Set Fichier_Compta=workbooks(Chemin & "nomDuClasseur.xlsm" ) ' qui doit bien être déterminer quelque part ?
Tu peu t'en servir simplement..
Fichier_Compta.Select
Si pas solutionner.. Fichier_Compta est toujours dans le même répertoire ?
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
voila comment est affectée la variable Fichier-Compta.
un peu avant le test des longueurs des journaux, dans le programme, on vérifie que le fichier COMPTA 20nn (ici COMPTA 2013) existe bien dans le répertoire et on l'ouvre.
L'indication "COMPTA13" est contenue dans la cellule A2 de la feuille "Structure" du fichier "Application-Resultat", qui est le seul fichier ouvert à ce moment là
Voir ci-dessous
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
'Cherche si le fichier Compta 20nn est ouvert
' si Compta 20nn n'est pas ouvert, procède à son ouverture
'cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
Range("A2").Select
Fichier_Compta = ActiveCell.Value
Fichier_a_ouvrir = ThisWorkbook.Path & "\" & Fichier_Compta
On Error Resume Next
Windows(Fichier_Compta).Activate
If Err.Number = 9 Then
Err.Number = 0
Workbooks.Open Filename:=Fichier_a_ouvrir
End If
Cette routine marche bien dans tous les cas et lors du debogage pas à pas, on voit bien le fichier Compta13 s'ouvrir et il reste ouvert.
C'est lors du test sur la longueur des journaux, que les comportements divergent.
Dans le cas correct on va bien dans les feuilles "journaux" de "Compta 13" relever la valeur des dernières lignes, et la comparaison est OK
Lors du fonctionnement incorrect, la dernière ligne est systématiquement fixée à la valeur 2. comme si on ne lisait pas les journaux de "COMPTA 13" mais la feuille "Structure" de "Application-Resultat" qui ne contient que deux lignes en colonne A.
voila comment est affectée la variable Fichier-Compta.
un peu avant le test des longueurs des journaux, dans le programme, on vérifie que le fichier COMPTA 20nn (ici COMPTA 2013) existe bien dans le répertoire et on l'ouvre.
L'indication "COMPTA13" est contenue dans la cellule A2 de la feuille "Structure" du fichier "Application-Resultat", qui est le seul fichier ouvert à ce moment là
Voir ci-dessous
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
'Cherche si le fichier Compta 20nn est ouvert
' si Compta 20nn n'est pas ouvert, procède à son ouverture
'cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
Range("A2").Select
Fichier_Compta = ActiveCell.Value
Fichier_a_ouvrir = ThisWorkbook.Path & "\" & Fichier_Compta
On Error Resume Next
Windows(Fichier_Compta).Activate
If Err.Number = 9 Then
Err.Number = 0
Workbooks.Open Filename:=Fichier_a_ouvrir
End If
Cette routine marche bien dans tous les cas et lors du debogage pas à pas, on voit bien le fichier Compta13 s'ouvrir et il reste ouvert.
C'est lors du test sur la longueur des journaux, que les comportements divergent.
Dans le cas correct on va bien dans les feuilles "journaux" de "Compta 13" relever la valeur des dernières lignes, et la comparaison est OK
Lors du fonctionnement incorrect, la dernière ligne est systématiquement fixée à la valeur 2. comme si on ne lisait pas les journaux de "COMPTA 13" mais la feuille "Structure" de "Application-Resultat" qui ne contient que deux lignes en colonne A.