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 :

insertion de cellules dans une formule excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Points : 28
    Points
    28
    Par défaut insertion de cellules dans une formule excel
    Bonjour,
    Je suis novice dans le domaine, je commence à utiliser l'enregistreur de macro, mais j'ai une application qui dépasse ses possibilités je pense.
    Je dois travailler des données annuelles (données en colonnes et dates en lignes) et constituer un reporting dans un tableau avec les mêmes données en colonnes et en lignes en ne retrouve plus que les mois.
    Mes tableaux de données de bases (nombreux 70!) n'ont pour l'instant pas le même format (les données ne sont pas dans les mêmes colonnes et le premier janvier ne commence pas sur la même ligne (ce serait trop simple).

    J'ai écrit le code suivant qui bloque sur la formule à la fin. J'ai utilisé la formule à partir d'une créée avec l'enregistreur (seconde macro : modform) dans laquelle j'ai inséré la variable P avec l'offset pour constituer la plage du mois de janvier, mais vb ne doit pas comprendre la valeur de P dans la formule.

    voici ce que ça donne:
    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
    Sub SAISIR()
    '
    ' SAISIR Macro
    ' Macro enregistrée le 08/06/2008 par BARRE
    '
        Dim P As Range
    'sélectionne la cellule de données pour janvier du paramètre choisi
        Dim cible As Range
    'sélectionne la cellule du tableau récap pour janvier pour le paramètre choisi
        Dim x As Range
    'sélectionne la cellule contenant la valeur maxi pour le paramètre choisi
        On Error Resume Next
        Set P = Application.InputBox("Sélectionnez la cellule de départ :", Type:=8)
        On Error GoTo 0
        If P Is Nothing Then MsgBox "Sélection annulée"
        On Error Resume Next
        Set cible = Application.InputBox("Sélectionnez la cellule d'arrivée :", Type:=8)
        On Error GoTo 0
        If cible Is Nothing Then MsgBox "Sélection annulée"
        On Error Resume Next
        Set x = Application.InputBox("Sélectionnez la contenant la valeur maxi :", Type:=8)
        On Error GoTo 0
        If x Is Nothing Then MsgBox "Sélection annulée"
     
     
       cible.FormulaR1C1 = _
            "=(COUNTIF(P:P.offset(30,0);"">X""))/(COUNTA(P:P.OFFSET(30,0)))"
        cible.Select
    End Sub
    en dessous c'est la macro de base dont je me suis inspiré

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub model_form()
    '
    ' model_form Macro
    ' Macro enregistrée le 08/06/2008 par BARRE
    '
     
    '
        ActiveCell.FormulaR1C1 = _
            "=(COUNTIF(R[-42]C[-2]:R[-3]C[-2],"">10""))/(COUNTA(R[-42]C[-2]:R[-3]C[-2]))"
        Range("D44").Select
    Merci d'avance de votre aide

  2. #2
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    Bonjour

    essaye ca :

    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
    ' Macro enregistrée le 08/06/2008 par BARRE
    '
        Dim P As Range
    'sélectionne la cellule de données pour janvier du paramètre choisi
        Dim cible As Range
    'sélectionne la cellule du tableau récap pour janvier pour le paramètre choisi
        Dim x As Range
        dim saisie as string
    'sélectionne la cellule contenant la valeur maxi pour le paramètre choisi
        On Error Resume Next
        saisie = Application.InputBox("Sélectionnez la cellule de départ :", Type:=8)
        set p = range(saisie)
        On Error GoTo 0
        If P Is Nothing Then MsgBox "Sélection annulée"
        On Error Resume Next
        saisie = Application.InputBox("Sélectionnez la cellule d'arrivée :", Type:=8)
        set cible = range(saisie)
        On Error GoTo 0
        If cible Is Nothing Then MsgBox "Sélection annulée"
        On Error Resume Next
        Set x = Application.InputBox("Sélectionnez la contenant la valeur maxi :", Type:=8)
        On Error GoTo 0
        If x Is Nothing Then MsgBox "Sélection annulée"
        
        
       cible.FormulaR1C1 = _
            "=(COUNTIF(P:P.offset(30,0);"">X""))/(COUNTA(P:P.OFFSET(30,0)))"
        cible.Select
    End Sub
    bonne soirée

    re:

    je crois avoir oublié quelque chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cible.Formula = "=(COUNTIF(" & P.address & ":" & P.offset(30,0).address & ";"">X""))/(COUNTA(" & P.address & ":" & P.offset(30,0).address & "))"

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Bonjour wilfried_42,

    Merci de m'avoir répondu.
    La macro ne fonctionne pas elle plante dès la première saisie. Après avoir saisi la cellule de départ j'ai un message d'erreur "sélection annulée".

    je vais chercher ce qui pourrait planter

    a+

  4. #4
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    voici ta macro

    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
     
    Sub essai()
        Dim P As Range
    'sélectionne la cellule de données pour janvier du paramètre choisi
        Dim cible As Range
    'sélectionne la cellule du tableau récap pour janvier pour le paramètre choisi
        Dim x As Range
        Dim formule As String
    'sélectionne la cellule contenant la valeur maxi pour le paramètre choisi
        On Error Resume Next
        Set P = Application.InputBox("Sélectionnez la cellule de départ :", Type:=8)
        On Error GoTo 0
        If P Is Nothing Then MsgBox "Sélection annulée"
        On Error Resume Next
        Set cible = Application.InputBox("Sélectionnez la cellule d'arrivée :", Type:=8)
        On Error GoTo 0
        If cible Is Nothing Then MsgBox "Sélection annulée"
        On Error Resume Next
        Set x = Application.InputBox("Sélectionnez la contenant la valeur maxi :", Type:=8)
        On Error GoTo 0
        If x Is Nothing Then MsgBox "Sélection annulée"
        formule = "=CountIF(" & P.Address & ":" & P.Offset(30, 0).Address & "," & Chr$(34) & ">" & x.Value & Chr(34) & ")"
        formule = formule & "/"
        formule = formule & "COUNTA(" & P.Address & ":" & P.Offset(30, 0).Address & ")"
        cible.Formula = formule
    End Sub
    J'ai eu du mal avec le format anglais jusqu'à je ce que percute
    en francais le separateur des arguments dans une fonction est le ; en anglais c'est la ,

    ps : je ne connaissais pas le type 8 dans les inputbox

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Bonjour wilfried_42,

    J'ai testé la macro, elle fonctionne telle que je le souhaitait,un grand merci à toi.

    Je vais maintenant tenter de comprendre mes erreurs et comprendre les codes que tu as modifiés.


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

Discussions similaires

  1. Recherche d'une cellule dans une feuille Excel
    Par vuong1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/03/2007, 07h51
  2. nombre de cellule dans une colonne excel
    Par mahboub dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/11/2006, 23h00
  3. Problème de lecture des cellules dans une feuille Excel
    Par wangjun dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/10/2006, 09h35
  4. [Excel] choisir une cellule dans une formule
    Par arcane dans le forum Excel
    Réponses: 1
    Dernier message: 24/03/2006, 18h05
  5. [VBA]Passer une variable dans une formule Excel
    Par David1974 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/01/2006, 16h52

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