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 Sub

Pourriez-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 = xlCalculationManual

et finir avec comme dernière ligne :

Application.Calculation = xlCalculationAutomatic

En 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 Sub

Outre 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 mais si je comprends bien il me faut garder des colonnes paramètres qui encombrent énormément mon 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.

Rechercher des sujets similaires à "vba difficulte tourner"