Liste déroulante désactivées par les macros

Bonjour,

je fait un excel pour aider à la configuration de nos produits, mon classeur excel s'organise comme çà :

  • un première feuille avec des données brutes, toutes les différentes options, les numéros de série, les désignations. j'ai défini des listes à l'intérieur de ces colonnes pour les données qui se regroupent.
  • une feuille de configuration ou l'utilisateur peut paramétrer le produit simplement, en cochant des options et avec des listes déroulantes de choix (les listes déroulantes utilisent les listes définies à la feuille 1)
  • un dernière feuille qui fait la synthèse de la feuille de config en ne récupérant que les option choisies (élimination des blancs)

j'ai commencé par faire ces 3 feuilles en excel "simple" (sans VBA), et ça marchait bien.

Puis j'ai voulu ajouter une macro pour générer la feuille 3 automatiquement : prendre les infos de la feuille 2 et éliminer les cellules vides en copiant les infos vers la feuille 3. (j'ai fait comme expliqué dans ce post : https://forum.excel-pratique.com/excel/copier-supprimer-des-donners-d-une-feuille-a-une-autre-t33783.html?hilit=liste%20sans%20cellule%20vide pour la macro.)

mon problème est que quand j'ai activé les macros, mes listes déroulantes de la feuille 2 de configuration ne marchent plus. quand je vais voir dans l'outils de validation de données et que je rentre la référence de ma liste de choix, j'ai le message d'erreur :

/!\ Vous ne pouvez pas faire référence à d'autres feuilles ou classeurs pour les critères Validation des données 

J'avais fait une sauvegarde de mon fichier avant d'ajouter la macro et là, aucun problème, avec les mêmes données, les mêmes listes, tout pareil... la seule différence entre les deux fichier est la macro (qui pourtant ne récupère pas les infos directement dans la cellule de la liste de choix)

est-ce que ce problème vous dit quelque chose ? savez-vous comment le résoudre ou le contourner ?

merci beaucoup et bonne journée.

Ant1

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

*** edit *** :

j'ai résolu ce problème (de manière un peu barbare, tant pis pour la compréhension) : je suis reparti de mon fichier original (sans macro) j'y ai ajouté la macro et mes listes sont toujours OK... Je ferme les yeux et croise les doigts en espérant que ca dure.

maintenant, j'ai un autre souci, avec la macro (c'est celle prise dans le post cité plus haut)

    Sub Transfert()

    Sheets("récapitulatif commande").Select
    'Range("A2:A200").ClearContents
    Sheets("config").Activate

    Dim MaCellule As Object
    For Each MaCellule In Range("code_config")

    If MaCellule.Value <> "" And IsEmpty(MaCellule) = False Then

    MaCellule.Copy

    Sheets("récapitulatif commande").Activate

    ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False

            End If
    Next MaCellule

    End Sub

Quand j'exécute ma macro, elle plante toujours à la ligne :

Range("A1").End(xlDown).Offset(1, 0).Select

j'ai essayé de trouver d'où ca vient, j'ai essayé de faire :

Range("A1").Select

ca marche, j'écris toujours au meme endroit et d'écrase au fur et à mesure, mais ca déroule toutes mes cellules et je retrouve le code de ma derniere ligne dans la cellule.

puis j'ai essayé :

Range("A1").End(xlDown).Select

en mettant du texte ou des chiffre en dessous de A1, histoire de voir si le déroulement jusqu'en bas de la colonne fonctionne. là encore pas de pb si ce n'est que j'écrase tout dans la derniere cellule de ma colonne et que je ne garde que mon dernier code.

de meme avec :

Range("A1").Offset(1, 0).Select

ca marche mais j'écris tout dans la cellule A2.

alors je me suis dit essayons avec tous les éléments :

Range("A1").End(xlDown).Offset(1, 0).Select

et surprise : ca marche ! (presque)

c'est parce que j'avais laissé les cases remplies avec des chiffres quelconques pour mon test précédents. Si A2 n'est pas vide, je peux faire ma macro qui écrit dans les lignes en dessous. si A2 est vide ca plante.

mon problème c'est que quand je relance ma macro, je veux n'avoir que les données de la dernière exécution et effacer les autres (c'est pour ca que j'ai ajouté la ligne

Range("A2:A200").ClearContents

commentée pour mes tests).

est ce que vous voyez pourquoi ca plante quand la première ligne est vide ?

merci et bonne journée.

Ant1

Bonjour

Ant1 a écrit :

est ce que vous voyez pourquoi ca plante quand la première ligne est vide ?

L'instruction

Range("A1").End(xlDown).Select

Part de la cellule A1 et ne s'arrêtera soit quelle trouve une cellule vide précédée d'une cellule non vide, soit à la fin de la colonne

Dans ton cas si A1 est vide elle s'arrêtera à la fin de la colonne et la copie après la fin de la colonne ne passera jamais

2 cas particuliers dans ce cas qu'il faudrait traiter

  • Si A1 est vide on obtient le dernier numéro de ligne
  • Si A1 n'est pas vide mais A2 est vide on obtient le dernier numéro de ligne

Moi, sauf cas particuliers, j'utilise le contraire si je veux copier après la dernière ligne d'une colonne comportant des trous

Je teste si la cellule (supposée être la première cellule vide de la colonne) est vide, et en fonction du résultat la copie se fera à partir de cette ligne soit à la fin obtenue en partant de la fin de la colonne et en remontant pour trouver la une cellule non vide

Le code pourrait être (en reprenant ton code)

  If Range("A1") = "" Then
    Range("A1").Select
  Else
    Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select
  End If
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False

Mais sans connaitre ton fichier ce n'est pas évident de te conseiller de la meilleure manière

Bonjour Banzai64,

et merci pour ton code, ca marche impec !

Mais sans connaitre ton fichier ce n'est pas évident de te conseiller de la meilleure manière

je sais mais c'est pour le boulot, et confidentiel, c'est pour ça que j'ai fait un post de 3kms pour essayer de décrire la situation au mieux sans donner le fichier direct...

en tt cas, ca suffisait pour que tu trouves la solution !!

Bonne journée.

Ant1

Rechercher des sujets similaires à "liste deroulante desactivees macros"