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

Excel Discussion :

m'aider a alleger une partie de code


Sujet :

Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut m'aider a alleger une partie de code
    salut,
    j'ai ecrit ce petit bout de code mais c'est lourding

    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
     
     
    If Range("C5") <> " " Then Range("N5").Value = "G" Else Range("N5").Value = ""
    If Range("C6") <> " " Then Range("N6").Value = "G" Else Range("N6").Value = ""
    If Range("C7") <> " " Then Range("N7").Value = "G" Else Range("N7").Value = ""
    If Range("C8") <> " " Then Range("N8").Value = "G" Else Range("N8").Value = ""
    'etc
    'etc
    'etc
    'etc
    If Range("C26") <> "" Then Range("N26").Value = "G" Else Range("N26").Value = ""
    If Range("C27") <> "" Then Range("N27").Value = "G" Else Range("N27").Value = ""
    If Range("C28") <> "" Then Range("N28").Value = "G" Else Range("N28").Value = ""
    If Range("C29") <> "" Then Range("N29").Value = "G" Else Range("N29").Value = ""
    If Range("C30") <> "" Then Range("N30").Value = "G" Else Range("N30").Value = ""
     
     
     
    If Range("C5") <> " " Then Range("Q5").Value = "G" Else Range("Q5").Value = ""
    If Range("C6") <> " " Then Range("Q6").Value = "G" Else Range("Q6").Value = ""
    If Range("C7") <> " " Then Range("Q7").Value = "G" Else Range("Q7").Value = ""
    If Range("C8") <> " " Then Range("Q8").Value = "G" Else Range("Q8").Value = ""
    'etc
    'etc
    'etc
    'etc
    If Range("C26") <> "" Then Range("Q26").Value = "G" Else Range("Q26").Value = ""
    If Range("C27") <> "" Then Range("Q27").Value = "G" Else Range("Q27").Value = ""
    If Range("C28") <> "" Then Range("Q28").Value = "G" Else Range("Q28").Value = ""
    If Range("C29") <> "" Then Range("Q29").Value = "G" Else Range("Q29").Value = ""
    If Range("C30") <> "" Then Range("Q30").Value = "G" Else Range("Q30").Value = ""
    dans les cellules C de 5 a 30 j'ai ou pas des données si presence de données il m'ecrit un G dans la case corespondante en N puis 3 cases plus loins en Q et insi de suite jusque la case AR mais mon code est trop trop lourd

    pouvez vous m'aider siou plait

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 827
    Points : 28 734
    Points
    28 734
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Alors d'abord le test, est-ce If Range("C5") <> " " ou If Range("C5") <> "" ?
    L'un fait un test sur un espace d'un caractère, l'autre une chaîne vide.
    Si c'est la chaîne vide que l'on teste, je préfère la tester ainsi cela évite les problèmes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Len(Range("C5")) <> 0 Then Range("N5") = "G" Else Range("N5") = ""
    Le test de comparaison <> 0 étant implicite, on peux raccourcir le test par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Len(Range("C5")) Then Range("N5") = "G" Else Range("N5") = ""
    Une autre façon d'écrire dans une cellule une valeur suivant une condition est l'utilisation de la fonction IIF dont la syntaxe est semblable à la formule SI d'excel. A savoir IIF(TestLogique, VRAI, FAUX)
    Donc on pourrait écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("N5") = IIf(Len(Range("C5")), "G", "")
    J'ajouterais en plus que c'est extrêmement dangereux d'écrire dans la cellule d'une feuille d'excel sans préciser la feuille ainsi que le classeur de la cellule de destination.
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets("Feuil1").Range("N5") = IIf(Len(ThisWorkbook.Worksheets("Feuil1").Range("C5")), "G", "")
    Et pour faire plus court, on utilisera, le bloc With / End With
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ThisWorkbook.Worksheets("Feuil1")
     .Range("N5") = IIf(Len(.Range("C5")), "G", "")
     End With
    Maintenant pour répondre à ton problème, l'utilisation d'un boucle en concaténant la colonne et le n° de la ligne est la solution.
    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Ecriture()
      Dim ligne As Long
      With ThisWorkbook.Worksheets("Feuil1")
        ' Boucle de la ligne 5 à la ligne 30
        For ligne = 5 To 30
        .Range("N" & ligne) = IIf(Len(.Range("C" & ligne)), "B", "")
        Next ligne
      End With
    End Sub
    Si l'on craint l'encodage malheureux d'un espace ou plus d'ailleurs on peut ajouter dans le test la fonction TRIM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("N" & ligne) = IIf(Len(Trim(.Range("C" & ligne))), "G", "")
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre actif
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 269
    Points
    269
    Par défaut
    Bonjour,

    je me permet de reprendre le code de Philippe pour le completer afin qu'il ecrivent bien dans toutes colonnes (enfin toutes les 3 colonnes).

    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 Ecriture()
      Dim ligne As Long
      Dim col As Long
      Dim rep As String
      With ThisWorkbook.Worksheets("Feuil1")
        ' Boucle de la ligne 5 à la ligne 30
        For ligne = 5 To 30
            If (Len(Trim(.Range("C" & ligne))) = "") Then
                rep = "G"
            Else
                rep = ""
            End If
            ' Boucle de la colonne N(14) à la colonne AR(44)
            For col = 14 To 44 Step 3
                .Cells(ligne, col) = rep
            Next
        Next ligne
      End With
    End Sub
    Cdt

    Guiiand

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut
    Merci a tous ça marche super

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/07/2007, 11h44
  2. comprendre une partie du code
    Par mademoizel dans le forum ASP.NET
    Réponses: 4
    Dernier message: 09/02/2007, 11h40
  3. comprendre une partie de code
    Par menuge dans le forum Langage
    Réponses: 24
    Dernier message: 03/09/2006, 20h44
  4. une partie du code a disparu
    Par recup dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 08/03/2005, 10h08
  5. Indenter une partie du code
    Par KooX dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/05/2004, 17h38

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