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 :

Simplication code vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Mars 2015
    Messages : 123
    Par défaut Simplication code vba
    Bonjour à tous,

    je me pose la question peut on simplifier ce code qui prend beaucoup de temps si le nombre de ligne est important.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Range("AA1").Select
    Do While ActiveCell.Value <> ""
         ActiveCell.Offset(0, 6).Select
         If ActiveCell.Offset.Value = "" Then
            ActiveCell.Value = "OK"
        End If
           ActiveCell.Offset(1, -6).Select
    Loop

  2. #2
    Inactif  
    Homme Profil pro
    Analyste-Programmeur / Intégrateur ERP
    Inscrit en
    Mai 2013
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur / Intégrateur ERP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 511
    Par défaut
    Bonjour,

    je ne sais pas si cela ira beaucoup plus vite, mais à tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim i as long
     
    i = 1
    Do While Range("AA" & i).Value <> ""
        If Range("AA" & i).Offset(0, 6).Value = "" Then
            Range("AA" & i).Offset(0, 6).Value = "OK"
        End If
        i = i+1
    Loop

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 129
    Par défaut
    Je pense qu'il faut essayer de manipuler la feuille le moins possible comme ceci :

    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
     
    Dim arrTmp()
    Dim ws As Worksheet
    Dim i As Long
    ' dans quel onglet travaille-t-on ?
    Set ws = ThisWorkbook.Sheets(1)
     
    With ws
        arrTmp = .Range("AA1:AG" & .Cells(.Rows.Count, 27).End(xlUp).Row).Value
    End With
     
    For i = 1 To UBound(arrTmp)
        If arrTmp(i, 6) = "" Then
            arrTmp(i, 1) = "OK"
        End If
    Next i
     
    With ws
        .Range("AA1:AG" & .Cells(.Rows.Count, 27).End(xlUp).Row).Value = arrTmp
    End With

Discussions similaires

  1. afficher un graphique dans word à partir de mon code vba
    Par guysocode dans le forum VBA Word
    Réponses: 2
    Dernier message: 07/11/2005, 14h15
  2. Réponses: 2
    Dernier message: 27/10/2005, 15h51
  3. Réponses: 4
    Dernier message: 13/10/2005, 14h44
  4. Réponses: 3
    Dernier message: 06/09/2005, 10h27
  5. Comment creer une procédure stockée à partir d'un code VBA?
    Par Alcor020980 dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 19h55

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