Bonjour Tout le monde,
Je suis actuellement en train de travailler sur un programme qui a pour but de lister des pannes sur des machines sélectionnées par l'opérateur a partir d'un tableau regroupant toute les pannes de toutes les machines de l'usine.
Un exemple : l'opérateur sélectionne la machine "presse" dans le menu déroulant machine (ComboBoxMachine), et la partie de la machine (Organe) "CN" dans le menu déroulant Organe (ComboBoxOrgane) pour avoir toute les pannes qui les concernes.
Le programme va donc aller rechercher toutes les rangées de cellules (en ligne) dans le tableau pour les transférer sur un nouveau tableau.
L'ennui c'est que je sait trop comment coder le programme de façon à ce que Excel "comprenne" qu'il faut donc copier la rangée de cellule (au nombre de 5) comprenant la cellule "presse" et la cellule "CN",
puis la coller dans une nouvelle zone et en répétant l'opération autant de fois que le programme rencontre les rangées de cellules dans la zone de recherche remplissant les deux conditions.
Je vous donne le code que j'ai fait (totalement incomplet et surement bourré de fautes) :
Je joint aussi le tableau de départ pour une meilleur visualisation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Private Sub CreationTableau_Click() ' comme sa je suis sur que dès que je lance le programme la zone est vide Range("$A$50:$G$1000").Select Selection.ClearContents Range("$A$50:$G$1000").Clear Dim TableauRegroupementDefaut As Range ' a savoir le nouveau tableau qui va recevoir les cellules Dim ZoneRecherche As Range ' zone de détection des cellules Dim NomMachine As String Dim NomOrgane As String NomMachine = ComboBoxMachine.ListIndex ' NomMachine prendras le libellé qui a marquer sur la sélection du comboBox à savoir "presse" NomOrgane = ComboBoxOrgane.ListIndex ' Idem que pour NomMachine sauf que cela concerne "CN" 'je me suis laissé une marge jusqu a 1000 Set ZoneRecherche = Sheets("Feuil2").Range("$G$50:$K$1000") Set TableauRegroupementDefaut = ZoneRecherche.Find(NomMachine, x1Value, x1Part) ' code de détection de la cellule (si je ne me suis pas trompé) Set TableauRegroupementDefaut = ZoneRecherche.Find(NomOrgane, x1Value, x1Part) ' même chose ' a partir de la je ne sais pas comment faire pour qu'il puisse détecter toute les rangées de cellules avec les conditions fixées par l'opérateur ' ni comment faire pour lui demander de copier les cellules à coté de celle qui remplisses les conditions End Sub
J'ai oublier de dire aussi que le tableau de départ est un tableau dynamique,
du coup je ne veux pas utiliser la fonction range sinon le logiciel pourrais copier coller les mauvaise infos si jamais les cellules changeais de place du a par exemple, un ajout ou un retrait de donnée,
ou un tri par ordre alphabétique qui repositionnerais les cellules.
Partager