Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Optimisation d'un code VBA pour liste

im_Guillaume

XLDnaute Nouveau
Bonjour le forum,

J'ai actuellement un code qui permet de :
- Dans l'onglet liste : avoir un tableau de données (il va être dynamique, des lignes vont être ajoutées et enlevées dans la version finale)
- dans l'onglet choix : avoir le "catalogue" de chacune des colonnes et pouvoir choisir parmi ces options.

Malheureusement, dans mon document original, le tableau de données dépasse les 500 lignes. Cela m'affiche le message d'erreur suivant :


Puis quand je regarde le fichier journal :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><logFileName>error104600_01.xml</logFileName><summary>Des erreurs ont été détectées dans le fichier « D:\mailing partenaires 2022 evolve6.xlsm »</summary><removedFeatures><removedFeature>Fonction supprimée: Validation des données dans la partie /xl/worksheets/sheet2.xml</removedFeature></removedFeatures></recoveryLog>

Comme si excel rencontrait un problème avec la validation des données dans l'onglet "choix"...

Je cherche donc à optimiser ce code pour qu'il fonctionne sur de grands tableaux. (Les fonctions doivent rester les mêmes au final)
Il fonctionne actuellement mais uniquement sur les "petits" tableaux.


La version actuelle du code est jointe ci-dessous.

Merci pour toute l'aide que vous pourrez m'apporter!
 

Pièces jointes

  • ex_forum.xlsm
    27.3 KB · Affichages: 9

im_Guillaume

XLDnaute Nouveau
Merci Patrick pour ta réponse et ton temps!

Ta solution me semble nickel (en espérant qu'elle ne soit pas limitée par la taille de la liste mais normalement ça devrait le faire!)
J'essaie d'implanter ça sur mon document source, merci encore!
 

im_Guillaume

XLDnaute Nouveau
Ça devrait aller

J'ai une question concernant ton fichier :
Actuellement, il y a des listes sur toutes les lignes des colonnes B, C, D, E :

Idéalement je souhaiterais avoir des liste uniquement dans les cases B5, C5, D5 et E5 :

Y a-t-il un moyen de modifier ton code pour correspondre à ça?

Encore merci pour temps!
 

patricktoulon

XLDnaute Barbatruc
et ben c'est simple
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    invisible
    If Not Intersect(Target, [B5:E5]) Is Nothing Then
        Select Case Target.Column
        Case 2: With ComboNum: .Top = Target.Top: .Visible = True: End With
        Case 3: With ComboPays: .Top = Target.Top: .Visible = True: End With
        Case 4: With ComboFonction: .Top = Target.Top: .Visible = True: End With
        Case 5: With ComboNom: .Top = Target.Top: .Visible = True: End With
        End Select
    Else
        invisible
    End If
End Sub
 

Dranreb

XLDnaute Barbatruc
Pourquoi n'avoir pas joint un classeur avec la véritable structure du tableau à mettre à jour ?
Je pense que vous n'aviez pas bien compris ma question, et que les colonnes sont bien liées.
Je joins donc la version avec un ComboBoxLiées. La question des doublons de combinaisons de 4 n'est toujours pas réglée, alors je ne peut pas encore y adjoindre les fonctions de mise à jour.
 

Pièces jointes

  • CBxLiéesIm_Guillaume.xlsm
    102.1 KB · Affichages: 5

patricktoulon

XLDnaute Barbatruc
re
@Dranreb les listes ne sont pas liées c'est la question que j'ai posé au départ quand je disais que c’était incohérent il a répondu que non
je cite
 

Dranreb

XLDnaute Barbatruc
Pourtant, il a sorti au poste #13 une structure de titres complètement différente, (pourquoi ne l'a-t-il pas fait dès le début ?) où vraiment, là, tout a l'air lié !
Je crois qu'il ne parle que des Llistes présentées dans les ComboBox, où il croit que si c'est lié il va y avoir des répétitions ?! …
 

patricktoulon

XLDnaute Barbatruc
re
je cite du post #13
Pour répondre donc à votre question :
je suppose que la validation de la ligne B5:E5 se fait après
 

Dranreb

XLDnaute Barbatruc
Oui mais il n'a peut être pas compris qu'il aurait dû dire si la COMBINAISON de tous les choix dans les listes ne correspond à aucune ligne … Mais on parle dans le vide car c'est justement cette combinaison qui n'est pas unique dans son tableau Liste donné en exemple, et il n'a toujours pas dit quoi faire si les 4 choix aboutissent à une de ces combinaisons.
 

im_Guillaume

XLDnaute Nouveau
Désolé pour le labs de temps, j'essais d'implanter les versions en parallèle!
Merci pour l'adaptation Patrick, ça fonctionne vraiment bien!

Merci pour votre patience à tous les deux!


En effet; les listes ne sont pas liées : ça fonctionne comme un consultant de base de données :

L'utilisateur recherche "une personne" (liste 4) avec "un numéro" (liste 1), dans "un pays" (liste 2) et "une fonction" (liste 3).

Puis il appuie sur le bouton recherche qui va ensuite trier la baase de données.

Si ces critères sont remplis par des lignes de la BDD, alors le résultat s'affiche. Si rien ne correspond : pas de résultat.

Est-ce peut être plus clair?
 

patricktoulon

XLDnaute Barbatruc
@Dranreb normalement il ne peut avoir 4 choix possible puisque les liste sont remplies sans doublons
maintenant si la ligne choix! B5:E5 correspond a x lignes dans liste ca c'est un autre problème qui n'est pas un d'ailleurs a moins que cette liste ne fasse pas que 4 colonnes au quel cas c'est toute la conception à revoir de la BDD liste
 

im_Guillaume

XLDnaute Nouveau
La partie qui trie la base de données est déjà implantée dans le fichier source (dont je vous ai transmis une version vide ci-dessus)
La partie qui me pose problème est celle qui dit à l'utilisateur les possibilités qu'il a dans chacune des listes
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…