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 :

Généraliser un code [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Par défaut Généraliser un code
    Bonjour le forum,

    j'ai besoin de votre aide pour modifier le code ci-dessous qui me permettra d'exécuter une macro pour les quelques 200 lignes concernées sans avoir à écrire autant de fois la condition "If ....End if".

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
     
    If [A1] <> "" Then
                ActiveSheet.Unprotect
        Range("A1").Select
        Selection.Copy
        Range("D1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
    End If
     
    If [A2] <> "" Then
                ActiveSheet.Unprotect
        Range("A2").Select
        Selection.Copy
        Range("D2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
    End If
     
    If [A3] <> "" Then
                ActiveSheet.Unprotect
        Range("A3").Select
        Selection.Copy
        Range("D3").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
     End If
     
       If [A4] <> "" Then
                ActiveSheet.Unprotect
        Range("A4").Select
        Selection.Copy
        Range("D4").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
     End If
     
     
     
     
     
     
        If [A240] <> "" Then
                ActiveSheet.Unprotect
        Range("A240").Select
        Selection.Copy
        Range("D240").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
     End If
     
     
     
                ActiveSheet.Protect
    End Sub
    Je vous remercie pour vos réponses et vous souhaite une bonne fin de journée.
    Cordialement.

  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 généraliser un code
    Bonjour,

    peut-être ceci logé dans la feuille concernée ou dans un module standard:
    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
     
    Sub copie()
     
    With Sheets("feuil2") ' mettre le nom de feuille concerné
    derlig = Range("a65000").End(xlup).Row
     
    ActiveSheet.Unprotect
     
    For i = 1 to derlig 
    If Range("a" & i) <> "" Then
        Range("A" & i).Copy
        Range("D" & i).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End If
    Next i
    ActiveSheet.Protect
    End With
     
    End Sub
    Je ne vois pas l’intérêt de ce code qui revient à copier en D le contenu de la colonne A. Ce qui peut-être fait directement sans boucle.
    S'il faut dans la copie ne pas reproduire les cellules vide c'est autre chose.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Par défaut
    Bonjour nibledispo et merci pour votre réponse.

    votre code fonctionne seulement jusqu'à la ligne 4 sans que je comprenne la raison de cet arrêt alors que la liste d'essai continue jusqu'à la ligne 16 !

    AB SCIENCE			AB SCIENCE
    ABC ARBITRAGE			ABC ARBITRAGE
    			
    AEROPORTS DE P			AEROPORTS DE P
    			
    AIR FRANCE -KL			
    AIR LIQUIDE			
    AKKA TECHNOLOG			
    ALCATEL-LUCENT			
    			
    			
    			
    ALTAREA			
    ALTEN			
    ALTRAN TECHN.			
    ANF IMMOBILIER			
    Pouvez-vous m'indiquer la raison de cet arrêt intempestif ?
    Merci.

  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 généraliser un code
    regarde à nouveau mon code édité.

    je dois m'absenter.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Par défaut
    Re,

    je viens de constater que le code s'arrête parce que la liste comporte des cellules vides.
    Est-ce un obstacle insurmontable ?
    La macro à exécuter est une macro "exemple"; celle que je souhaite utiliser devra ouvrir des pages internet et les copier dans un fichier puis comparer les données recueillies avec d'autres précédemment enregistrées.

    Dans l'attente.
    Nonno 94.

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 73
    Par défaut
    Re,

    qu'entends tu par liste avec des cellules vides ?

    Lorsque tu renseignes la colonne A logiquement ça remplit D
    Si une cellule de A est vide ça n'interrompt pas la macro... car dans le code les cellules vides ne sont pas prises en comptes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("a" & i) <> "" Then
    et donc la macro se poursuit jusqu'à la fin du dernier mot trouvé dans la colonne A.

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 73
    Par défaut
    Bonsoir Nonno,

    je viens de tomber sur ton problème et j'ai également essayé la solution de nibledispo.

    Cette dernière fonctionne chez moi, (office 2007).

    Peux tu nous mettre le code que tu as recopier de Nibledispo, juste pour voir !

    Cdlt,
    PLV.

  8. #8
    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 généraliser un code
    Ce n'est pas grave mais supprime le post en doublon qui n'a plus d'intérêt pour toi.

    CORDIALEMENT

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

Discussions similaires

  1. De la rapidité du code
    Par jfloviou dans le forum Contribuez
    Réponses: 233
    Dernier message: 29/05/2009, 02h17
  2. généralisation d'un code pour plusieurs lignes XL
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 20/07/2007, 17h58
  3. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58
  4. Explorateur de code C
    Par Zero dans le forum C
    Réponses: 14
    Dernier message: 06/06/2002, 09h41
  5. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45

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