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 :

Simplification fonction macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par défaut Simplification fonction macro
    Bonjour, j'ai un debut de macro avec ce code :


    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 CommandButton1_Click()
    Dim DerniereLigne As Long
    DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
     
    For i = 1 To DerniereLigne           'boucle qui va de 1 à 1
     If Worksheets("Base").Cells(1 + i, 1) = Worksheets("MAJ").Cells(2, 1) Then
        Worksheets("Base").Cells(1 + i, 3) = Worksheets("MAJ").Cells(2, 2)
      End If
      If Worksheets("Base").Cells(1 + i, 1) = Worksheets("MAJ").Cells(3, 1) Then
        Worksheets("Base").Cells(1 + i, 3) = Worksheets("MAJ").Cells(3, 2)
      End If
     If Worksheets("Base").Cells(1 + i, 1) = Worksheets("MAJ").Cells(4, 1) Then
        Worksheets("Base").Cells(1 + i, 3) = Worksheets("MAJ").Cells(4, 2)
      End If
       If Worksheets("Base").Cells(1 + i, 1) = Worksheets("MAJ").Cells(5, 1) Then
        Worksheets("Base").Cells(1 + i, 3) = Worksheets("MAJ").Cells(5, 2)
      End If
       If Worksheets("Base").Cells(1 + i, 1) = Worksheets("MAJ").Cells(6, 1) Then
        Worksheets("Base").Cells(1 + i, 3) = Worksheets("MAJ").Cells(6, 2)
      End If
       If Worksheets("Base").Cells(1 + i, 1) = Worksheets("MAJ").Cells(7, 1) Then
        Worksheets("Base").Cells(1 + i, 3) = Worksheets("MAJ").Cells(7, 2)
      End If
    Next i
     
    End Sub
    En fait je doit reprendre les données de la ligne 2 à 200, là j'ai crée pour les ligne de 2 à 7, je vroudrais savoir si il y avait possibilité de faire directement 2 à 200 sans avoir a faire un copier coller de ma fonction :

    If Worksheets("Base").Cells(1 + i, 1) = Worksheets("MAJ").Cells(7, 1) Then
    Worksheets("Base").Cells(1 + i, 3) = Worksheets("MAJ").Cells(7, 2)
    End If


    Merci

    jusuq'a 200

  2. #2
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut simplification macro
    bonjour,

    n'est-ce pas tout simplement cela que tu veux faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub CommandButton1_Click()
    Dim DerniereLigne As Long
    DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
     
    For i = 2 To DerniereLigne           'boucle qui va de 1 à 1
     If Worksheets("Base").Cells(i, 1) = Worksheets("MAJ").Cells(i, 1) Then
        Worksheets("Base").Cells(i, 3) = Worksheets("MAJ").Cells(i, 2)
     End If
    Next i
     
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par défaut
    j'ai deja essayé mais cela ne marche pas, meme avec 1 + i

    Le bouton de la macro est sur la feuil "Base"
    je pense que cela vient de ça

    en revanche j'ai fait ceci cela marche

    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
    Private Sub CommandButton1_Click()
    Dim DerniereLigne As Long
    DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
     
    For i = 1 To DerniereLigne
    For p = 1 To DerniereLigne
     If Worksheets("Base").Cells(1 + i, 1) = Worksheets("MAJ").Cells(1 + p, 1) Then
        Worksheets("Base").Cells(1 + i, 3) = Worksheets("MAJ").Cells(1 + p, 2)
      End If
     
      Next p
    Next i
     
     
    End Sub
    merci quand meme

  4. #4
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut simplification macro
    Re...,

    Je vois mieux ce que tu voulais.

    Par contre, je ne vois pas en quoi commencer la boucle à 2 pose problème.

    Par ailleurs, si "maj" est limité à 7 lignes, pourquoi utiliser deux fois derniereligne qui si j'ai bien compris, sera 200 ?

    Cordialement,

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par défaut
    "Maj" est limité à 200 dans un 1er temps mais risque d'evoluer rapidement en nombre de ligne donc au temps réutilisé dernierligne non ?

    Cordialement

  6. #6
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut simplification macro
    Bonsoir,

    Ne connaissant pas précisément ton problème, je ne peux que répondre ceci :

    Je rechercherais la dernière ligne de "maj" comme tu le fais pour "derniereligne" de "base". Ainsi pas de travail inutile pour VBA et nul besoin de revenir sur le code pour cause de dépassement.

    Cordialement,

Discussions similaires

  1. [AC-2003] Afficher message/formulaire en fonction macro
    Par pikayo dans le forum IHM
    Réponses: 7
    Dernier message: 12/08/2011, 13h31
  2. Réponses: 9
    Dernier message: 19/12/2009, 12h00
  3. Simplification de macro
    Par zeralium dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/07/2007, 15h57
  4. [fonctions] macro, inline ou pas
    Par TabrisLeFol dans le forum C
    Réponses: 10
    Dernier message: 19/01/2007, 00h35
  5. [VBA-Excel] Simplification de macros ...
    Par Nyang_kamen dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/01/2007, 11h04

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