La même macro fonctionne sur un de mes PC et pas sur l'autre

Fermé
Michel - 3 juil. 2013 à 17:10
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 - 8 juil. 2013 à 08:39
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



A voir également:

6 réponses

Utilisateur anonyme
3 juil. 2013 à 17:18
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
0
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.
0
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 707
6 juil. 2013 à 09:58
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
0
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
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 6/07/2013 à 23:23
Bonjour,
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 .
0
Merci pour ces suggestions
j'ai essayé les propositions 1 et 2. Cela ne change rien.
Pour la proposition 3, elle est refusé par la programme car Fichier-Compta est deja ouvert comme indiqué dans ma réponse à f894009.
merci pour votre aide.
0
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 707
7 juil. 2013 à 10:41
Bonjour,

Comment affectez-vous la variable Fichier_Compta ??
0

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.
0
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 707
Modifié par f894009 le 8/07/2013 à 08:40
Bonjour,

essayez ceci:

Windows(Fichier_Compta).Activate
Sheets(Journal).Activate
DerLigneJournal = Sheets(Journal).Range("A" & Rows.Count).End(xlUp).Row

la variable journal est-elle bien affectee ???
0