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 SubA+
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 !