IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Modification de script VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 326
    Par défaut Modification de script VBA
    Bonjour,

    J'aimerai adapter le script suivant pour qu'il fasse l'opération que si la cellule A est non vide et la cellule L est vide.

    Ceci pour éviter qu'il recalcule depuis le debut (+ de 120 000 lignes)


    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub Formule_Category()
    Application.Calculation = xlCalculationManual
    Dim tableau(143, 1) As String
    'Le nombre de lignes de la page Erreurs doit aller jusqu'à la ligne 143, sinon, adapter la valeur ci-dessus
     
    'Alimentation tableau
    j = 0
    While Not IsEmpty(Worksheets("Erreurs").Range("A" & j + 1))
        tableau(j, 0) = Worksheets("Erreurs").Range("A" & j + 1).Text
        tableau(j, 1) = Worksheets("Erreurs").Range("B" & j + 1).Text
        j = j + 1
    Wend
    MsgBox "Tableau de correspondances rempli... OK pour continuer"
     
    Sheets("INCIDENTS").Select
    i = 2
    While Not IsEmpty(Range("A" & i))
    j = 0
      corresp = 0
      While corresp = 0
         If Range("J" & i) = "test1" Or Range("J" & i) = "test2" Then
            Range("L" & i) = "Test"
            corresp = 1
         Else
     
            If InStr((LCase(Range("D" & i).Text)), LCase(tableau(j, 0))) Then
                  Range("L" & i) = tableau(j, 1)
                  corresp = 1
     
            End If
         End If
         j = j + 1
       Wend
    i = i + 1
    Wend
    Application.Calculation = xlCalculationAutomatic
    End Sub

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour,

    merci de clôturer le précédent post dans le forum Excel !

    Sinon je commencerais par filtrer les colonnes selon les critères puis modifierais uniquement les cellules visibles,

    voir l'aide de AutoFilter (sans compter le Générateur de macros offrant sur un plateau une base de code !)

    et de SpecialCells (voir aussi les exemples dans les discussions de ce forum) …

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour

    je n'ai pas tout compris, et je ne sais pas si la modif doit être placée dans la première boucle While, la seconde, voir les deux

    Donc je te laisse voir si c'est ce que tu cherches.

    Mais à mon avis il faut changer de méthode (utiliser des filtres par exemple ?)

    Boucle 1 : remplacer la ligne 8 par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    While (Not IsEmpty(Range("A" & i)) And IsEmpty(Range("L" & i)))
    Boucle 2 : remplacer la ligne 17 par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    While (Not IsEmpty(Range("A" & i)) And Not IsEmpty(Range("L" & i)))

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 326
    Par défaut
    Bonjour,


    je viens de modifier la ligne 17 il ne passe rien. Avez vous une autre solution

    Merci d'avance

  5. #5
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Bonjour,

    je viens de modifier la ligne 17 il ne passe rien.
    ça veut dire quoi ? ton code ne s’exécute plus ? Ton code n'écrit plus rien sur ta feuille Excel ? Tu as un message d'erreur ?

    Sinon, quitte à faire des i = i+1, je te conseil d'utiliser des boucles FOR, et pas des wend ...

    Et je te suggère d'essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While (Range("A" & i) <> ""  And Range("L" & i) = "")

  6. #6
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 326
    Par défaut
    Mon code n'écrit plus rien. Même avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While (Range("A" & i) <> "" And Range("L" & i) = "")
    en ligne 17.

    J'ai une feuille qui contient plus 128000 lignes
    Ma macro remplit la colonne la colonne L, toutes les semaines je rajoute des valeurs.
    Ma macro s'exécute sur la totalité de la feuille alors qu'il faudrait qu'elle s'exécute que sur les lignes rajoutées.

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2007, 10h50
  2. [eCommerce] Modification de scripts e-commerce
    Par DavidN90 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 03/03/2007, 00h31
  3. Transformé une formule Excel en script VBA ?
    Par SFLEY dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 06/01/2007, 11h48
  4. Script vba excel trop lent
    Par zootman dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/07/2006, 14h27
  5. Aide pour modification de script
    Par cryptorchild dans le forum Langage
    Réponses: 3
    Dernier message: 04/10/2005, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo