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 :

Entrer une formule pour une cellule dans un macro!? (sivide) [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 25
    Points : 20
    Points
    20
    Par défaut Entrer une formule pour une cellule dans un macro!? (sivide)
    Bonjours , je ne c'est pas du toute comment procéder, mais j'aimerai bien réaliser un macro , Jai jamais utiliser de macro encore a ce jour je suis donc débutant.

    J'aimerai faire en sorte d'attribuer cette formule a la cellule (I9) avec un macro,
    car dans cette cellule, il Ya une liste intuitive, et donc a chaque foi que j'écrit sur la cellule , la formule disparais., j'aimerai que la formule reste toujours active.

    voici la formule que j'aimerai intégrer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHE(G9;'No Dossier AaZ'!A:A;'No Dossier AaZ'!C:C)

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par djmisterjon1 Voir le message
    J'aimerai faire en sorte d'attribuer cette formule a la cellule (I9) avec un macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHE(G9;'No Dossier AaZ'!A:A;'No Dossier AaZ'!C:C)
    Je pense qu'au final, cela devrait ressembler à cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MetsUneFormuleDansLaCelluleI9
         range("I9").formulalocal = "=RECHERCHE(G9;'No Dossier AaZ'!A:A;'No Dossier AaZ'!C:C)"
    end sub
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Cela ne semble pas marcher , je fait une éclairci de ce que je veut faire en gros
    J'aimerai un macro qui prend scran la cellule h9, et que si example il voi que la cellule est vide il lui ajoute la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHE(J9;'ADRESSE AaZ'!C:C;'ADRESSE AaZ'!A:A)
    Je vous explique et vous envoi le classeur que je tente de composer.
    En gros j'aimerai que les employer puisse soi écrire le numéraux de jobs de la liste ou l'adresse de la jobs La liste est intuitive) et que toute les autres cellule ce remplisse automatiquement.
    Pour l'instant tout fonction mise a par lorsque (exemple j'écrit quelque chause , je me trompe et efface , la formule disparait !, c'est pourquoi ces gênant , c'est une feuille de temps. avec liste intuitive.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir,
    je te propose autrement sans formules, étudies ce fichier
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Merci J'avoue que c'est encore mieux sans formule comme tu réaliser , j'étudie sa e t je te revient la dessue.

    Mais je croie que je perde la notion de (liste intuitive) pour la sélectionne des adresse de ville

    exemple si je entre 22 dans adresse , il sortai toute les adresses commençant par 22 pour faciliter le choix.
    merci je regarde sa de plus prêt.

    J'ai essayer de répliquer ton scripte pour la cellule qui représente les adresse ??
    Sa ne semble pas fonctionne , je suis un peut mauvais en VB

    Jai ajouter ceci pour ma cellule adresse en J9

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim adres As Range, Dl As Long
    If Target.Row >= 9 And Target.Row <= 23 And Target.Column = 10 Then
      With Sheets("ADRESSE AaZ")
        Dl = .Range("c" & .Rows.Count).End(xlUp).Row
        Set adres = .Range("c2:c" & Dl).Find(Target.Value)
      End With
      If Not adres Is Nothing Then
        Range("h" & Target.Row) = adres(1, 3)
        Range("K" & Target.Row) = adres(1, 4)
        Range("L" & Target.Row) = adres(1, 5)
        Range("M" & Target.Row) = adres(1, 2)
     
      End If
    End If
    End Sub
    Je met a jour le code , mais je ne sais pas pourquoi ca ne marche pas , mais je sens que jy suis presque .

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim adres As Range, Dl As Long
    If Target.Row >= 9 And Target.Row <= 23 And Target.Column = 8 Then
      With Sheets("ADRESSE AaZ")
        Dl = .Range("A" & .Rows.Count).End(xlUp).Row
        Set adres = .Range("A2:A" & Dl).Find(Target.Value)
      End With
      If Not adres Is Nothing Then
        Range("J" & Target.Row) = adres(1, 3)
        Range("K" & Target.Row) = adres(1, 4)
        Range("L" & Target.Row) = adres(1, 5)
        Range("M" & Target.Row) = adres(1, 2)
     
      End If
    End If
    If Target.Row >= 9 And Target.Row <= 23 And Target.Column = 10 Then
      With Sheets("ADRESSE AaZ")
        Dl = .Range("C" & .Rows.Count).End(xlUp).Row
        Set adres = .Range("C2:C" & Dl).Find(Target.Value)
      End With
      If Not adres Is Nothing Then
        Range("H" & Target.Row) = adres(1, 1)
        Range("K" & Target.Row) = adres(1, 4)
        Range("L" & Target.Row) = adres(1, 5)
        Range("M" & Target.Row) = adres(1, 2)
     
      End If
    End If
    End Sub

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,

    autant avec tes formules, tu te retrouvais avec des références circulaires, autant en transformant mon code en l'adaptant pour la colonne des adresses provoquera une boucle infinie car ce code est dans l'événement "Change". C'est à dire :
    1 - tu choisis un N° de dossier, l'adresse se met à jour, comme l'adresse se met à jour, le N° de dossier se met à jour, comme le N0 de dossier...etc. Et tu n'auras plus qu'à fermer excel malproprement.

    tu ne pourras donc faire ce que tu souhaites avec l'évènement "Change"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Cela Est plutôt Très embêtant!, j'ai adapté ton code, une foi étudier jai mieux comprit ca fonction, merci encore’!
    Il fonctionne pour les 2 choix, mais comme tu ma expliquer voilà le problème, lorsque j'ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("H" & Target.Row) = adres(1, -1)
    Pour que lorsque l’adresse est choisie le script aille chercher le no. Jobs, excelle m’affiche une erreur, du certainement au cycle et plante.


    Il n’existera pas une façon de faire ou d’adapter ton code peut être a un petit bouton qui une fois l’adresse entrer, en cliquant sur le bouton le scripte s’exécute une seule foi, ou une foi le no jobs entrer pareille le scripte ne s’exécute que une seule foi.
    Ou sinon encore mieux, empêche la fenêtre de bug de s’afficher, ou qu’il exécute une fonction (stop) apprêt l’exécution 1 foi !

    Car je dois impérativement avoir la possibilité de soi pouvoir chercher par la liste de numéraux de jobs ou pour la liste des adresse.

    Sinon, le code fonctionne très bien comme sa mais avec l’adresse, il ya que le n'jobs qui n’apparait pas.


    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim adres As Range, Dl As Long
    If Target.Row >= 9 And Target.Row <= 23 And Target.Column = 8 Then
      With Sheets("ADRESSE AaZ")
        Dl = .Range("A" & .Rows.Count).End(xlUp).Row
        Set adres = .Range("A2:A" & Dl).Find(Target.Value)
      End With
      If Not adres Is Nothing Then
        Range("J" & Target.Row) = adres(1, 3)
        Range("K" & Target.Row) = adres(1, 4)
        Range("L" & Target.Row) = adres(1, 5)
        Range("M" & Target.Row) = adres(1, 2)
     
      End If
    End If
    If Target.Row >= 9 And Target.Row <= 23 And Target.Column = 10 Then
      With Sheets("ADRESSE AaZ")
        Dl = .Range("C" & .Rows.Count).End(xlUp).Row
        Set adres = .Range("C2:C" & Dl).Find(Target.Value)
      End With
      If Not adres Is Nothing Then
        Range("K" & Target.Row) = adres(1, 2)
        Range("L" & Target.Row) = adres(1, 3)
        Range("M" & Target.Row) = adres(1, 0)
     
      End If
    End If
    End Sub


    Je joint de nouveau le fichier mais avec le scripte corriger, mais sans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("H" & Target.Row) = adres(1, -1)
    Qui fait planter, si defoi quelqu'un a une idée pour m'aider ou un code a étudier , je débute au plus bas niveau en VB.
    Fichiers attachés Fichiers attachés

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par casefayere Voir le message
    Bonjour,

    autant avec tes formules, tu te retrouvais avec des références circulaires, autant en transformant mon code en l'adaptant pour la colonne des adresses provoquera une boucle infinie car ce code est dans l'événement "Change". C'est à dire :
    1 - tu choisis un N° de dossier, l'adresse se met à jour, comme l'adresse se met à jour, le N° de dossier se met à jour, comme le N0 de dossier...etc. Et tu n'auras plus qu'à fermer excel malproprement.

    tu ne pourras donc faire ce que tu souhaites avec l'évènement "Change"
    Bonjour a toi , jai trouver une solution et une correction a ton code qui fonctionne et ne créer pas de problème de loop , je venai simplement te remercier et par respect aussi offrir la solution de ton code qui ne cause plus de problème
    Encor merci pour ton aide.


    Voici le code modifier qui fonctionne et ne bug pas avec les loop.
    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
    Option Explicit
    Dim BlockChange As Boolean
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim adres As Range, Dl As Long
      If BlockChange Then Exit Sub
      BlockChange = True
      Application.ScreenUpdating = False
        If Target.Row >= 9 And Target.Row <= 23 And Target.Column = 8 Then
          With Sheets("ADRESSE AaZ")
            Dl = .Range("A" & .Rows.Count).End(xlUp).Row
            Set adres = .Range("A2:A" & Dl).Find(Target.Value)
          End With
          If Not adres Is Nothing Then
            Range("J" & Target.Row) = adres(1, 3)
            Range("K" & Target.Row) = adres(1, 4)
            Range("L" & Target.Row) = adres(1, 5)
            Range("M" & Target.Row) = adres(1, 2)
          End If
        End If
        If Target.Row >= 9 And Target.Row <= 23 And Target.Column = 10 Then
          With Sheets("ADRESSE AaZ")
            Dl = .Range("C" & .Rows.Count).End(xlUp).Row
            Set adres = .Range("C2:C" & Dl).Find(Target.Value)
          End With
          If Not adres Is Nothing Then
            Range("K" & Target.Row) = adres(1, 2)
            Range("L" & Target.Row) = adres(1, 3)
            Range("M" & Target.Row) = adres(1, 0)
            Range("H" & Target.Row) = adres(1, -1)
          End If
        End If
      BlockChange = False
      Set adres = Nothing
    End Sub

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour le forum, djmisterjon1,

    Je suis ravi que tu ais trouvé la solution à ton problème et content qu'en tant que nouveau membre, tu ais compris le principe du forum eu publiant ton code et en ne laissant pas en 'lettre morte" la discussion, un coté frustrant qui arrive trop souvent.

    Au plaisir de pouvoir t'aider...à moins que ça ne soit toi qui m'orientes.

    Bonne journée

    PS : cette réponse sera supprimée dès que je penserai que tu l'as lue, elle n'apporte rien au coté technique.

    Mes excuses : n'ayant pas encore la tête dans le sac, je n'ai pas analysé ta proposition mais te fais confiance
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/02/2014, 12h09
  2. [Toutes versions] Extraire une valeur d'une ListBox pour l'afficher dans une cellule
    Par stid59 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/04/2009, 22h05
  3. Réponses: 1
    Dernier message: 31/03/2009, 22h59
  4. [OpenOffice][Tableur] Besoin d'aide pour une formule: colorer fond cellule suivant un chiffre
    Par bennji dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 26/01/2009, 13h47
  5. Réponses: 7
    Dernier message: 28/10/2008, 10h54

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