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 :

Simplifier un code


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Par défaut Simplifier un code
    Bonjour à tous,
    C'est ma première visite, je vais essayer d'être clair et précis.
    J'ai un document de production dont j'ai automatisé le remplissage avec le code suivant:

    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
    Range("B11").Select
        ActiveCell.FormulaR1C1 = "=VlookUp('Fiche surveillance'!R11C1,'Données'!R7C6:R87C24,2,False)"
        If IsError(Range("B11").Value) Then
        ActiveCell.Value = ""
        Else: ActiveCell.Value = "=VlookUp('Fiche surveillance'!R11C1,'Données'!R7C6:R87C24,2,False)"
        End If
    Range("B13").Select
        ActiveCell.FormulaR1C1 = "=VlookUp('Fiche surveillance'!R13C1,'Données'!R7C6:R87C24,2,False)"
        If IsError(Range("B13").Value) Then
        ActiveCell.Value = ""
        Else: ActiveCell.Value = "=VlookUp('Fiche surveillance'!R13C1,'Données'!R7C6:R87C24,2,False)"
        End If
    Range("B15").Select
        ActiveCell.FormulaR1C1 = "=VlookUp('Fiche surveillance'!R15C1,'Données'!R7C6:R87C24,2,False)"
        If IsError(Range("B15").Value) Then
        ActiveCell.Value = ""
        Else: ActiveCell.Value = "=VlookUp('Fiche surveillance'!R15C1,'Données'!R7C6:R87C24,2,False)"
        End If
    Je me dis qu’il doit être possible de créer une boucle qui permet d’incrémenter la cellule à remplir de 2 à partir de la cellule B11 jusqu’à la cellule B174 et la valeur recherchée de 2 à partir de la valeur 'Fiche surveillance'!R11C1 jusqu’à la valeur Fiche surveillance'!R174C1 ce qui me permettrait de simplifier l’écriture et le risque d’erreur.
    Malgré toutes mes recherches je n'y arrive pas, pouvez-vous m'aider.
    Merci

  2. #2
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2014
    Messages : 32
    Par défaut
    Salut,

    Tu peux essayer avec un truc de ce style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function AutoFillUp(ByVal aColumnNumber as string)
      Range("B" + aColumnNumber).Select
      ActiveCell.FormulaR1C1 = "=VlookUp('Fiche surveillance'!R" + aColumnNumber + "C1,'Données'!R7C6:R87C24,2,False)"
      If IsError(Range("B" + aColumnNumber).Value) Then
        ActiveCell.Value = ""
      Else: ActiveCell.Value = "=VlookUp('Fiche surveillance'!R" + aColumnNumber + "C1,'Données'!R7C6:R87C24,2,False)"
      End If
    End Function
     
    AutoFillUp("11")
    AutoFillUp("13")
    AutoFillUp("15")

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Test()
    Dim i As Long
     
    For i = 11 To 174 Step 2
        With Range("B" & i)
            .FormulaR1C1 = "=VlookUp('Fiche surveillance'!R" & i & "C1,'Données'!R7C6:R87C24,2,False)"
            If IsError(.Value) Then .Value = ""
        End With
    Next i
    End Sub

  4. #4
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Par défaut Ca marche mais
    Citation Envoyé par mercatog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Test()
    Dim i As Long
     
    For i = 11 To 174 Step 2
        With Range("B" & i)
            .FormulaR1C1 = "=VlookUp('Fiche surveillance'!R" & i & "C1,'Données'!R7C6:R87C24,2,False)"
            If IsError(.Value) Then .Value = ""
        End With
    Next i
    End Sub
    Ce code fonctionne à merveille. Juste un petit problème, le bouton de commande doit être dans la feuille à remplir mais dans mon application le bouton de commande est dans une autre feuille (Reception). Je suppose que je dois déclarer la feuille à modifier mais je n'arrive pas à la déclarer. Comment m'y prendre.
    GG

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 11 To 174 Step 2
        With Worksheets("NomDeTaFeuille").Range("B" & i)
            .FormulaR1C1 = "=VlookUp('Fiche surveillance'!R" & i & "C1,'Données'!R7C6:R87C24,2,False)"
            If IsError(.Value) Then .Value = ""
        End With
    Next i

Discussions similaires

  1. [E-00] Utilisation d'un auxilliaire pour simplifier le code
    Par anyah dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 21/11/2008, 17h31
  2. Simplifier le code
    Par Msieurduss dans le forum Langage
    Réponses: 8
    Dernier message: 18/06/2008, 10h07
  3. Réponses: 4
    Dernier message: 10/05/2008, 12h31
  4. Simplifier mon code "Majuscule/Minuscule"
    Par Manou34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2008, 17h05
  5. Aide pour simplifier un code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 24/01/2008, 16h15

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