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 :

modifier formule dans macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 41
    Par défaut modifier formule dans macro
    bonjour le forum

    j'ai une macro et je voudrais y inserer une formule dont les valeurs change a chaque clique de macro.Cette formule c'est "=NB.SI(Feuil1!$B$2:$F$41;A6)"les valeurs qui doivent changer sont le 2 et 41 qui passeront a 3 et 42.Voici le code,le code doit s'inserer entre "End With" et "Range("A6:B54").Copy".
    Mais comment inscrire 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
    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
    Sub Macro4()
    ' Macro4 - 40-Auto
    Dim plg As Byte
    Dim dlg As Integer, vligne As Integer
    dlg = Range("L" & Rows.Count).End(xlUp).Row
    Application.ScreenUpdating = True
    For plg = 34 To dlg
        With Range("H" & plg & ":L" & plg)
            .Copy Range("C1")
            .ClearContents
        End With
     
        Range("A6:B54").Copy
        Range("C6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        With ActiveWorkbook.Worksheets("40").Sort
            .SortFields.Clear
            .SortFields.Add Key:=Range("D6:D54"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange Range("C6:D54")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Calculate
        'Range("G5").Select
        vligne = Range("AD65536").End(xlUp).Row + 1
        Range("C3:G3").Copy
        Range("AD" & vligne).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
    Dim Cellule As Range
    Dim Plage As Range
     
    Dim i, l, c As Integer
    i = 6
    Set Plage = Range("C1:G1")
    While IsEmpty(Range("A" & i)) = False
         For Each Cellule In Plage
          If Range(Cellule.Address).Value = Range("C" & i).Value Then
          l = Range("E" & i).Value + 8
          c = Range("F" & i).Value + 10
          Cells(c, l) = Cells(c, l) + 1
          End If
         Next Cellule
          i = i + 1
    Wend
    Next
    Application.ScreenUpdating = False
    Range("G5").Select
    End Sub
    merci

  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,

    J'ai du mal à comprendre la finalité.

    Ou doit être positionnée la formule? (quelle colonne ou quelle cellule)
    Au clic suivant on remplace la formule ou on la place dessous la précédente?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 41
    Par défaut
    bonjour jfontaine,le forum

    je me suis mal exprimer,mormalement je le fait manuellement par les macros 1,2,3 dans le fichier joint.j'ai créé une 4eme macro qui regroupe les 3 macros mais il manque une étape celle d'aller chercher dans la BdD une partie de la plage de donnéés des lignes 2 a 41 dela formule c'est la partie de la feuille "40" en B6:B54.Quand je le fais manuellement je modifie la formule en cel B6,je change les valeurs 2 et 41 en 3 et 42 que je recopie jusqu'en B54.C'est cette opérationque je voudrais inscrire dans le code la "macro 4 auto".Cette opération doit modifier a chaque fois que je clique sur la macro 4,les valeurs 2 et 41 en 3 et 42 puis quand je reclique en 4 et 43,c'est ce code qui doit etre inscrit entre les lignes 11 et 13 ou aprés "End With et avant "Range("A6:B54").Copy
    je joint le fichier
    merci

  4. #4
    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
    Essais le code ci dessous. Je pense qu'il fait ce que tu souhaites

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Ligne As Integer
    Dim str() As String
     
    'Recherche du dernier numéro de référence de la formule
    str = Split(Sheets("40").Range("B6").FormulaLocal, "$")
    Ligne = Split(str(2), ":")(0) + 1
     
    'Mise en place de la nouvelle formule
    Sheets("40").Range("B6:B54").FormulaLocal = "=NB.SI(BdD!$B$" & Ligne & ":$F$" & Ligne + 39 & ";A6)"

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 41
    Par défaut modifier formule dans macro
    bonjour jfontaine,le forum

    merci pour le code
    bonne journée

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

Discussions similaires

  1. [XL-2007] écrire ou modifier formule dans DONNEES : validation des données : source.
    Par mistral123 dans le forum Conception
    Réponses: 10
    Dernier message: 23/06/2015, 08h03
  2. [VBA Excel] Formule contenant des noms de colonnes dans macro
    Par Tinnou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/06/2007, 18h09
  3. [Formule]Macro pour masquer des formules dans une cellule
    Par Hellx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/04/2007, 08h21
  4. [VBA] Macro qui envoie une formule dans une cellule
    Par Okoss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2007, 22h32
  5. [Excel] Insertion de formule dans ma feuille par macro (erreur400)
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2007, 10h27

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