IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Windows XP à Windows 7: Problème de compatibilité


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Septembre 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2013
    Messages : 81
    Points : 46
    Points
    46
    Par défaut Windows XP à Windows 7: Problème de compatibilité
    Bonjour,

    je suis actuellement en stage pour valider ma première année du BTS IRIS. Cette année, j'ai vu que le C, C++ donc pas de VBA du tout. Mon tuteur m'a lancé sur un logiciel de gestion qui fut conçu sous Windows XP mais depuis, l'entreprise est passé à Windows 7 et ce logiciel rencontre un problème qui est, pour mon tuteur, de compatibilité. Ce logiciel ouvre un formulaire qui renseigne ce qui est disponible en magasin (boulon, vis et autres...) mais ce formulaire plante dès l'ouverture et l'erreur est la suivante:

    Erreur d'exécution '1004':

    La référence est incorrecte. Cette version de fichier peut uniquement contenir des formules faisant référence à des cellules qui se trouvent dans les dimensions de feuille de calcul correspondant à 256 colonnes (colonnes IW ou supérieure), ou 65 536 lignes.

    Au niveau du code, lorsque je lance le débogage, c'est ces lignes là qui font défaut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Workbooks(ClasseurSource).Sheets(1).Range(RangeSource _
            ).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Critères"). _
            Range(RangeFiltre), CopyToRange:=Range("A1:C1"), Unique:=False
    Besoin de votre aide, en vous remerciant d'avance.

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonjour,
    Le message d'erreur semble indiquer une erreur de gestion du nombre de lignes et de colonnes
    qui diffèrent selon la version Excel référencée donc s'intéresser à la valeur de RangeSource.

  3. #3
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Septembre 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2013
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Merci pour ta réponse rapide, au moins je sais d'où vient le problème. Comment puis-je faire pour le résoudre ? Dans mon fichier de variable, j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public RangeSource As String, LastPlateau(9) As Integer '9 kardex maxi par site

  4. #4
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Commence par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    debug.print RangeSource
    Workbooks(ClasseurSource).Sheets(1).Range(RangeSource _
            ).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Critères"). _
            Range(RangeFiltre), CopyToRange:=Range("A1:C1"), Unique:=False
    Pour la suite, vu la quantité d'information, on n'est pas devin

  5. #5
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Septembre 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2013
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    j'ai toujours l'erreur. De quoi avez vous besoin afin de m'aider ?

  6. #6
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Du résultat obtenu avec l'instruction debug.print

    Ctrl G : fenêtre de débogage

    PS: Voir le tutoriel sur le débogage dans ma signature

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour

    Plusieurs questions:

    Sont-ils passés d'un WindowsXP 32 bits à un Windows 7 64 bits ?

    Ont-ils changé de version d'Excel ?

    Si oui, leur nouvelle version d'Excel est-elle 32 bits ou 64 bits ? Si oui, il y a certaines précautions à prendre; notamment avec l'utilisation directe de l'API Windows. (Cela ferait un point en ta faveur, si tu vérifies cela et que tu corriges au besoin)

    Est-ce que, dans le classeur que tu utilises, il y a Vraiment une feuille nommée "Critères" qui contient vraiment une zone de critères du nom de RangeFiltre? Sinon, tu as un problème avec cette partie-là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CriteriaRange:=Sheets("Critères").Range(RangeFiltre)

  8. #8
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Septembre 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2013
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    j'ai fait des recherches toute la journée, sans succès.

    Pour la question du XP 32bits à 7 64bits, la réponse est oui.
    Pour la version, effectivement, ils utilisaient Excel 2003 et sont passé directement au 2013.
    Microsoft Office est installé dans x86 donc en 32bits.
    Sur le screen ajouté, tu peux voir la présence du feuille intitulée "Critères" mais apparement, elle est vide ???

    J'espère qu'avec ça, tu vas pouvoir me dire d'où vient le problème est comment le résoudre car actuellement, je n'ai plus d'idée sur quoi faire.

    PS: J'ai ajouté un petit aperçu du code.
    Images attachées Images attachées   

  9. #9
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Castiel777 Voir le message
    Bonjour,


    Sur le screen ajouté, tu peux voir la présence du feuille intitulée "Critères" mais apparement, elle est vide ???

    PS: J'ai ajouté un petit aperçu du code.
    Regarde la feuille dans Excel, pas dans VBA.

    Cliques sur l'onglet "Critères" pour sélectionner la feuille

    Appuies sur F5 et essaies d'atteindre la plage RangeFiltre.

    Est-ce que la zone existe?

    Est-elle sélectionnée ?

    Y-a-t-il des critères dans la zone sélectionnée ?

    Aussi regarde dans ton module APIWindows, s'il n'y a pas des lignes en rouge, signe d'erreurs.

    Bien content de voir qu'il y a aussi SAP dans le décor. C'est mal parti, je n'ai pas SAP, ni accès à SAP.

  10. #10
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Septembre 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2013
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    j'ai pu faire un screen de la feuille Excel "Critères".
    Quand je fais F5 sur VBA, ça me demande soit "Fin", soit "Déboger" donc pas moyen d'atteindre la plage RangeFiltre.
    Pour le module APIWindows, je n'ai aucune ligne en rouge.
    Images attachées Images attachées  

  11. #11
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Castiel777 Voir le message
    Bonjour,

    Quand je fais F5 sur VBA, ça me demande soit "Fin", soit "Déboger" donc pas moyen d'atteindre la plage RangeFiltre.
    Je te parle de faire F5 dans Excel; quand ta feuille Critères est active. Dans to image d'écran, tu as un message d'erreur, à propos d'un nom. Cela inspire que tu n'a pas de plage nommée RangeFiltre. Ton filtre élaboré a besoin d'une zone de critères et cette zone de critères doit avoir un nom. Quand tu fais F5 dans Excel, tu veux atteindre une cellule ou une plage.

    Ta zone de critères doit avoir plus d'une ligne. Je dirais 5 ou 6. Dans le filtre élaboré, chaque ligne distincte représente un "OU" logique et tout ce qu'il y a sur la même ligne représente une série de "ET" logiques.

    En résumé:
    Dans VBA => F5 lance le programme
    Dans Excel => F5 ouvre la boîte de dialogue Atteindre

  12. #12
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Septembre 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2013
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    j'ai bien cette fenêtre qui s'ouvre mais je ne sais pas quoi faire avec :s
    J'ai essayé de taper RangeFiltre dans "Référence", il dit qu'il n'a pas trouvé de référence de play ou de nom défini.

    EDIT: J'ai remplacé une chose dans le code où il y a l'erreur:

    Workbooks(ClasseurSource).Sheets("niedzwiedzki").Range(RangeSource _
    ).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Critères"). _
    Range(RangeFiltre), CopyToRange:=Range("A1:C1"), Unique:=False

    Au champ Sheets, j'ai remplacé "1" par le nom de la feuille. J'ai débogé et lancé, il a passé l'erreur donc je me suis dit que c'était ça sauf que quand j'ai relancé complétement, c'est revenu sur la même erreur :/
    Quand tu parles d'une zone de critère, qu'est-ce c'est ?
    Images attachées Images attachées   

  13. #13
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,


    Citation Envoyé par Castiel777 Voir le message
    Bonjour,

    j'ai bien cette fenêtre qui s'ouvre mais je ne sais pas quoi faire avec :s
    J'ai essayé de taper RangeFiltre dans "Référence", il dit qu'il n'a pas trouvé de référence de play ou de nom défini.
    C'est la preuve que tu n'a pas de plage RangeFiltre dans ta feuille. Parce que, s'il y avait une plage RangeFiltre dans ta feuille, ce serait indiqué dans la boîte de dialogue. Puisque ta macro ne trouve pas la plage inexistante, elle plante.


    EDIT: J'ai remplacé une chose dans le code où il y a l'erreur:

    Workbooks(ClasseurSource).Sheets("niedzwiedzki").Range(RangeSource _
    ).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Critères"). _
    Range(RangeFiltre), CopyToRange:=Range("A1:C1"), Unique:=False

    Au champ Sheets, j'ai remplacé "1" par le nom de la feuille. J'ai débogé et lancé, il a passé l'erreur donc je me suis dit que c'était ça sauf que quand j'ai relancé complétement, c'est revenu sur la même erreur :/
    Ce n'est pas CopyTO qu'il faut changer. CopyTo c'est l'endroit de la feuille où tu veux afficher les résultats. Il faut que tu changes CriteriaRange


    Quand tu parles d'une zone de critère, qu'est-ce c'est ?
    C'est une plage de cellules d'une ou plusieurs lignes qui contien(nen)t une (des) expressions logiques qui définissent les éléments à extraire dans la plage des données disponibles. (Dans cette macro c'est supposé être/s'appeler RangeFiltre, mais cela peut être n'importe quel nom). Comme je t'ai dit hier, ta zone de critères doit comprendre plus d'une ligne pour que le filtre puisse traiter les ET et les OU. Dans ton cas cette zone de critères est inconnue et la macro plante. Là, quoi qu'il en soit, tu dois prendre le temps d'apprendre Excel, et même les bases de VBA, avant de continuer. Sinon, tu n'arriveras à rien; parce que VBA-Excel est là pour permettre de faire automatiquement ce que l'on fait à la mitaine dans Excel. Tu vas devoir maîtriser au minimum "l'Interactivité" entre l'interface d'Excel et VBA.

    Pour les filtres élaborés:

    http://philippetulliez.developpez.co...dvancedfilter/

    Pour "le reste" d'Excel:

    http://excel.developpez.com/cours/

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/06/2011, 21h00
  2. Réponses: 2
    Dernier message: 05/10/2010, 14h59
  3. Réponses: 4
    Dernier message: 18/05/2009, 01h43
  4. Réponses: 5
    Dernier message: 16/03/2006, 00h09
  5. Problème de compatibilité Windows XP vers 98
    Par chleuh dans le forum EDI
    Réponses: 5
    Dernier message: 22/08/2005, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo