VBA - Difficulté à tourner
Bonjour,
Pour le travail j'ai du écrire un macro me facilitant la vie, malheureusement, elle met énormément de temps à tourner..
Pourtant j'en ai de bien plus grosse qui tournent 10 fois plus vite.
Sub ATA()
Dim colonneEntree As Integer 'Colonne ATA'
Dim colonneSortie As Integer 'Colonne ATA + description'
Dim derligne&
colonneEntree = 14
colonneSortie = 15
derligne = Sheets("OI Base").Range("A" & Rows.Count).End(xlUp).Row 'Definition de la dernière ligne de la colonne A'
For i = 2 To derligne
If Sheets("OI Base").Cells(i, colonneEntree).Value = "5" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 5 TILE LIMITS / MAINTENANCE CHECKS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "6" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 6 DIMENSIONS AND AREAS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "7" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 7 LIFTING AND SHORING"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "8" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 8 LEVELING AND WEIGHING"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "9" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 9 TOWING AND TAXING"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "10" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 10 PARKING, MOORING, STORAGE AND TURN TO SERVICE"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "11" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 11 PLACARDS AND MARKINGS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "12" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 12 SERVICING - ROUTINE MAINTENANCE"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "14" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 14 HARDWARE"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "18" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 18 HELICOPTER VIBRATION"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "20" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 20 STANDARD PRACTICES - AIRFRAME"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "21" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 21 AIR CONDITIONING AND PRESSURIZATION"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "22" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 22 AUTOFLIGHT"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "23" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 23 COMMUNICATIONS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "24" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 24 ELECTRICAL POWER"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "25" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 25 EQUIPMENT / FURNISHINGS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "26" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 26 FIRE PROTECTION"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "27" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 27 FLIGHT CONTROLS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "28" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 28 FUEL"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "29" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 29 HYDRAULIC POWER"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "30" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 30 ICE AND RAIN PROTECTION"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "31" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 31 INDICATING / RECORDING SYSTEM"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "32" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 32 LANDING GEAR"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "33" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 33 LIGHTS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "34" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 34 NAVIGATION"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "35" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 35 OXYGEN"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "36" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 36 PNEUMATIC"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "37" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 37 VACUUM"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "38" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 38 WATER / WASTE"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "42" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 42 INTEGRATED MODULAR AVIONICS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "44" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 44 CABIN SYSTEM"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "45" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 45 DIAGNOSTIC AND MAINTENANCE SYSTEM"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "46" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 46 INFORMATION SYSTEMS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "47" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 47 NITROGEN GENERATION SYSTEM"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "48" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 48 IN FLIGHT FUEL DISPENSING"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "49" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 49 AIRBORNE AUXILIARY POWER"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "50" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 50 CARGO AND ACCESSORY COMPARTMENTS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "51" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 51 STANDARD PRACTICES AND STRUCTURES - GENERAL"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "52" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 52 DOORS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "53" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 53 FUSELAGE"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "54" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 54 NACELLES / PYLONS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "55" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 55 STABILIZERS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "56" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 56 WINDOWS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "57" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 57 WINGS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "60" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 60 STANDARD PRACTICES"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "61" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 61 PROPELLES"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "62" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 62 ROTORS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "63" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 63 ROTOR DRIVE SUSTEM"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "64" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 64 TAIL ROTOR"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "65" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 65 TAIL ROTOR DRIVE SYSTEM"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "66" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 66 BLADES & PYLONS FOLDING DEVICE"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "67" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 67 ROTOR FLIGHT CONTROLS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "70" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 70 STANDARS PRACTICES - ENGINES"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "71" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 71 POWER PLANT"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "72" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 72 ENGINE"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "73" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 73 ENGINE - FUEL AND CONTROL"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "74" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 74 IGNITION"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "75" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 75 AIR"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "76" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 76 ENGINE CONTROLES"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "77" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 77 ENGINE INDICATION"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "78" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 78 EXHAUST & THRUST REVERSER"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "79" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 79 OIL"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "80" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 80 STARTING"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "81" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 81 TURBINES (RECIPROCATING ENGINES)"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "82" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 82 ENGINE WATER INJECTION"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "83" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 83 ACCESSORY GEARBOXES"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "84" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 84 PROPULSION AUGMENTATION"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "89" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 89 FLIGHT TEST INSTALLATION"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "91" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 91 CHARTS"
End If
If Sheets("OI Base").Cells(i, colonneEntree).Value = "92" Then
Sheets("OI Base").Cells(i, colonneSortie).Value = "ATA 92 ELECTRICAL AND ELECTRONIC COMMON INSTALLATION"
End If
Next
End SubPourriez-vous me donner quelques conseils si vous pouvez.
Merci d'avance,
FloBru
Bonjour,
Pourquoi faire ça par macro et non pas par une simple formule Recherchev() qui récupère la valeur dans une table ?
eric
Bonjour,
Des conseils pour que ta macro aille beaucoup plus vite ... il en existe beaucoup ...
Tu peux commencer par insérer comme premiére ligne :
Application.Calculation = xlCalculationManualet finir avec comme dernière ligne :
Application.Calculation = xlCalculationAutomaticEn espèrant que cela t'aide ...
Bonjour,
Si tu ne veux pas opérer une recherche par formule, comme conseillé par Eric :
Sub ATA()
Dim Tata() As String, Sata() As String, dln&, i&
'On suppose que l'on a une table de recherche nommée TablAta à 2 colonnes...
'Sinon il faudra adapter selon dont on dispose pour constituer tableau...
With [TablAta]
ReDim Tata(.Cells(.Rows.Count, 1))
For i = 1 To Rows.Count
Tata(.Cells(i, 1)) = .Cells(i, 2)
Next i
End With
With Worksheets("OI Base")
dln = .Cells(.Rows.Count, 1).End(xlUp).Row
ReDim Sata(2 To dln, 0)
For i = 2 To dln
Sata(i, 0) = Tata(.Cells(i, 14))
Next i
.Cells(2, 15).Resize(dln - 1).Value = Sata
End With
End SubOutre l'adaptation éventuelle pour constituer tableau Tata, il y aura peut-être à convertir les valeurs cherchées (col. Entrée et col. 1 de la table de recherche) en valeurs numériques s'il s'agit de valeurs textes...
NB- J'ai toujours la plus grande méfiance et de nombreuses réserves à travailler avec des nombres entre guillemets, on est à la merci de conversions automatiques non maîtrisées... Il est toujours préférable de travailler explicitement avec des nombres...
Cordialement.
Re,
@Eriiic, je faisais avant appel à un tableau et une recherchev() mais mon document étant accessible et bloqué à beaucoup de monde je me dois de faire des boutons e mises à jour sur une page d'accueil pour que le fichier tourne même en mon absence.
Et ca me permet aussi de supprimer des colonnes de paramètres.
@james007, en effet cela va plus vite merci!
@MFerrand, ta réponse m'aide aussi beaucoup, je vais m'en servir pour un autre tableau
Un énorme merci à vous ca m'aide beaucoup!
@+
FloBru
Merci ... pour tous tes remerciements ...
Bonne Continuation ...
Bonjour, Salut à tous !
mais si je comprends bien il me faut garder des colonnes paramètres qui encombrent énormément mon tableau.
Si tu entends par là la table de recherche, telle que l'a indiquée Eric, c'est en effet le moyen le plus simple. Tu la places sur une feuille annexe que tu masques, et elle ne devrait guère être gênante...
On peut bien sûr faire sans, mais c'est un peu plus compliqué et cela accroît les risques d'erreurs. Alors qu'une telle table peut facilement être mise à jour et contrôlée...
Cordialement.