Amélioration de mon code VBA

Bonjour,

Actuellement mon Excel est finit (il reste des cases à compléter dans la feuille "Solution", colonne i "Ouvrages", mais c'est normal), il marche très bien.

Mais je dois finalement ajouter une dernière chose.

Dans la feuille "Choix de l'ouvrage", en case C22 il faudrait que lorsque je clique sur le bouton Résultats cela affiche Infiltration possible ou Infiltration impossible.

Car une fois avoir sélectionner dans les menus déroulants mes choix cela affiche le ou les ouvrages possibles.

J'ai déjà créer colonne en J "Infiltration" de la feuille "solution", en filtre.

Le code VBA se trouve dans le module 1. Où j'ai écris un commentaire " 'Infiltration possible/impossible". (SVP écrivez en dessous de celui ci sans modifier le reste)

Merci d'avance !

ilonadb18

Problème mon fichier fait 4 636 Ko, et on a le droit à max 1.5 Mo comment faire pour vous l'envoyez ? par adresse email ?

Bonjour iLonadb18

Bien que non conseillé par le forum, vous pouvez mettre votre fichier sur un site comme GrosFichiers

Et nous indiqué le lien en enlevant "https://" devant

ATTENTION !
Le fichier devra être anonymisé

A+

Bonjour BrunoM45,

Je vous remercie pour cette solution !

Voilà : p4KihjmYZvX

Il faut juste écrire avant https:// gros fichier . com /

bonjour,

Pour moi impossible de télécharger ce fichier (même en enlevant les espaces...)

A+

Bonjour galopin01,

et avec ce lien ?

https:// www . grosfichiers . com/fr/p4KihjmYZvX

En tout cas quand même !

Edit modo : manquait "/fr/"

Re,

Les colonnes 9 et 10 étant au 3/4 vide c'est difficile d'avoir une réponse à tous les coups.

Sinon ton code est pertinent (quoique une peu lent...)

On pourrait commencer par supprimer les Select,

Mais le gain le plus important serait en récupérant juste les Index des choix ainsi tu aurais une table de correspondance à 1 seule colonne du type :

2010100, 3100111...

Les ouvrages c'est pareil il faudrait les référencer dans une feuille de paramètres (il y aurait un gros coup à jouer en leur donnant une référence du type AA, Ak, BC...

référence qu'on pourrait utiliser dans le CodeName des feuilles WsAA, WsBC: Ton classeur y gagnerait surement au moins 50% en légèreté et pour la recherche un simple Dico te ferait ça en une fraction de seconde.

Reste à savoir si tu as vraiment envie de te lancer dans cette opération ?

A+

Etant encore novice Excel, je vous avoue que je n'ai pas tout compris dans votre proposition...

Effectivement les colonnes 9 et 10 ne sont toutes complétées, c'est normal je finirais après ! ;)

Pensez vous qu'il est possible de "simplement" reprendre mon code en ajoutant cette autre étape ? Du même style que celui déjà écrit ?

Re ilonadb18,

Voici le code quelque peu optimisé

Sub rechercheLigne()
  Dim dLig As Long, Lig As Long
  Dim perimetre As String                        'valeurs saisies sur Choix de l'ouvrage
  Dim permeabilite As String                     'valeurs saisies sur Choix de l'ouvrage
  Dim nappe As String                            'valeurs saisies sur Choix de l'ouvrage
  Dim mouvement As String                        'valeurs saisies sur Choix de l'ouvrage
  Dim cavite As String                           'valeurs saisies sur Choix de l'ouvrage
  Dim inondable As String                        'valeurs saisies sur Choix de l'ouvrage
  Dim contraint As String                        'valeurs saisies sur Choix de l'ouvrage
  Dim SolutionTrouve As Boolean
  Dim sInfiltration As String
  Dim sOuvrage As String
  ' Avec l'objet feuille conteneur
  With Sheets("Choix de l'ouvrage")
    perimetre = .Range("I5").Value
    permeabilite = .Range("I7").Value
    nappe = .Range("I9").Value
    mouvement = .Range("I11").Value
    cavite = .Range("I13").Value
    inondable = .Range("I15").Value
    contraint = .Range("I17").Value
  End With
  SolutionTrouve = False
  With Sheets("Solution")
    dLig = .Range("A" & Rows.Count).End(xlUp).Row
    For Lig = 2 To dLig
      If .Cells(Lig, 2) = perimetre And _
            .Cells(Lig, 3) = permeabilite And _
            .Cells(Lig, 4) = nappe And _
            .Cells(Lig, 5) = mouvement And _
            .Cells(Lig, 6) = cavite And _
            .Cells(Lig, 7) = inondable And _
            .Cells(Lig, 8) = contraint Then
        SolutionTrouve = True
        sOuvrage = .Cells(Lig, 9)
        sInfiltration = .Cells(Lig, 10)
      End If
    Next Lig
  End With
  With Sheets("Choix de l'ouvrage")
    .Range("P4:Z38").ClearContents
    Dim pic As Object
    For Each pic In ActiveSheet.Pictures
      pic.Delete
    Next pic
    'copier - coller le schéma
    Sheets(sOuvrage).Range("A1:K35").Copy
    .Range("P4").Select
    .Paste
    If SolutionTrouve Then
      .Range("C22").Value = sInfiltration
    Else
      .Range("C22").Value = "Solution non trouvée"
    End If
  End With
End Sub

A+

Wow merci énormément BrunoM45 !

C'est totalement ce que je voulais, en plus je comprends le code qui est très simple !

Je bloquais sur pas grand chose finalement !

Et merci à vous galopin01, d'avoir pris le temps de m'aider !

Rechercher des sujets similaires à "amelioration mon code vba"