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 :

Aide pour écrire une formule en VBA Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Aide pour écrire une formule en VBA Excel
    Bonjour à tous,

    Je souhaite insérer cette formule dans mon tableau Excel. Celle-ci doit-être fonctionnelle uniquement toutes les 4 colonnes à partir de J4 et sur toutes les lignes de ces colonnes. La 1ère colone de mon tableau est en A4.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SI(I4="";"";MOIS.DECALER(I4;$H$2))
    J'ai commencé ça, mais je ne sais pas écrire cette formule en VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    For Each c In Range([A4], Cells(Rows.Count, 1).End(xlUp))
            For i = 10 To 66 Step 4
                If Cells(c.Row, i - 1) = "" Then
                'ici rien ne se passe
                Else
                Cells(c.Row, i).Formula = "" 'ici ma formule
                    End If
                    Next i
                Next c
    Merci par avance pour votre aide

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Dans ton cas, j'utiliserais un copier/coller, comme cela les références se mettront à jour sans se casser la tete

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Pour le moment c'est ce que j'ai fait, mais cela ralenti considérablement le calcul de la feuille, c'est pour cette raison que je souhaitais inclure cette formule dans une macro VBA.

    Merci toutefois pour ta réponse

    Bonjour à tous,

    J'espère que vous avez passé un excellent weekend pascal.
    J'ai planché sur mon problème pendant 2 jours sans succès.

    Mon code concerne 11025 cellules et je suis convaincu qu'en passant par une macro Vba cela irait beaucoup plus vite.

    Pour la colonne J la base est H2, pour N la base est L2, etc..., jusqu'à la colonne BN où la base est BL2.

    Par exemple pour un résultat dans les cellules de la colonne J4 à J108 la formule est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =Si(I4;"";"";MOIS.DECALER(I4;$H$2))
    Dans H2 il y a 3, donc je calcul à partir de la date en I4 quelle date nous serons dans 3 mois.

    Je pense mettre ce code dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub
    Peut-être n'est-ce pas réalisable en Vba. Merci toutefois de m'apporter votre aide.
    René

    Bonjour à tous,

    J'ai écris ce code, mais il me renvoit la date saisie dans la cellule précédente.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    For Each c In Range([A4], Cells(Rows.Count, 1).End(xlUp))
            For i = 10 To 66 Step 4
                If Cells(c.Row, i - 1) = "" Then
                'ici rien ne se passe
                Else
                Cells(c.Row, i).Formula = (Cells(c.Row, i - 1) + (H2 * 30)) 'ici ma formule
                    End If
                    Next i
                Next c

  4. #4
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour
    Placer en A1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=IF(R[3]C[8]="""","""",EDATE(R[3]C[8],R2C8))"
    est la transcription de
    =SI(I4="";"";MOIS.DECALER(I4;$H$2))
    R[3]C[8] correspondant a un offset par rapport a la cellule A1.

    J'aurai plutôt ecrit comme cela ton code, afin d'eviter le else et le end if

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each c In Range([A4], Cells(Rows.Count, 1).End(xlUp))
            For i = 10 To 66 Step 4
                If Cells(c.Row, i - 1) <> "" Then Cells(c.Row, i).Formular1c1 = = "=IF(R[3]C[8]="""","""",EDATE(R[3]C[8],R2C8))
                    Next i
                Next c

  5. #5
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour et merci,

    J'ai fait comme tu me l'as indiqué, ça marche pour ma première colonne, mais la formule doit être faite pour être uilisée toutes les 4 colonnes, en commençant par la colonne H et se terminant par la colonne BL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Each c In Range([A4], Cells(Rows.Count, 1).End(xlUp))
            For i = 10 To 66 Step 4
                If Cells(c.Row, i - 1) <> "" Then Cells(c.Row, i).FormulaR1C1 = "=IF(RC[-1]="""","""",EDATE(RC[-1],R2C8))"
                    Next i
                Next c
    Mais j'ai peur que tout ces codes ne ralentissent encore plus le calcul.

  6. #6
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Comme c'est lundi, tu peux m'envoyer juste la premiere ligne pour m'eclaircir l'esprit. Ensuite on peut codifier le resultat a obtenir sans coller une formule sur la feuille.

    Quelle sont les format de cellule apliquer en h2, i4,j4. Si j'ai bien compris, tu veux ajouter H2 a la date se trouvant en I4 dans H4.


    Après réflexion, je me suis réuni et on en as débattu pour arriver à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each c In Range([A4], Cells(Rows.Count, 1).End(xlUp))
            For i = 10 To 66 Step 4
                If Cells(c.Row, i - 1) <> "" Then Cells(c.Row, i).FormulaR1C1 = "=IF(RC[-1]="""","""",EDATE(RC[-1],R2C" & i - 2 & "))"
            Next i
    Next c
    OU alors sans verifié que I est vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub devellopêz()
    Dim c As Range
    num = Range("A65000").End(xlUp).Row
    For i = 10 To 66 Step 4
         Range(Cells(4, i), Cells(num, i)).FormulaR1C1 = "=IF(RC[-1]="""","""",EDATE(RC[-1],R2C" & i - 2 & "))"
    Next i
    End Sub
    On copie la formule dans toutes la colonne d'un coup, cela devrait accélerer le traitement

  7. #7
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Donc, pour la première ligne, j'ai mis une partie du fichier en pièce jointe.

    Dans la cellule J4 il y a la formule.
    Fichiers attachés Fichiers attachés

  8. #8
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Une MFC ne serait t-elle pas plus rapide que Couleurs ?

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

Discussions similaires

  1. Besoin d'aide pour écrire une requête
    Par Jean-Marc68 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/10/2009, 19h54
  2. [XL-2003] Aide pour erreur dans un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/05/2009, 07h48
  3. aide pour comprendre une formule mathématique
    Par roubas dans le forum Mathématiques
    Réponses: 3
    Dernier message: 22/03/2009, 12h30
  4. aide pour écrire une requete imbriquée
    Par DonKnacki dans le forum Langage SQL
    Réponses: 6
    Dernier message: 07/03/2008, 15h13
  5. Aide pour écrire une requête complexe
    Par julienbdx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/11/2005, 16h58

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