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 :

Macro avec fonction si


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Macro avec fonction si
    bonjour à tous .
    je vous explique en quelques lignes mon probleme.
    j'ai enregistré une macro qui copie et insere des cellules contenant du texte dans une cellule d'une autre feuille. jusque là tout va bien .
    ensuite dans ma feuille j'ai cree une fonction "si" qui lorsque la cellule selectionné affiche le texte voulu alors elle appelle la macro enregistré.
    une fois que dans le menu deroulant de la cellule selectionné je choisis le terme qui enclenche la macro celle ci se repete à l'infini et je suis obbligé d'appuyer sur echap pour arreter la casse !!!!

    pourriez vous m'aider pour que celle ci ne se repete qu'une fois.
    je vous remercie d'avance

    ci-joint la macro enregistré et en dessus la fonction de la feuille


    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
    Sub orga1() 
    ' 
    ' orga1 Macro 
    ' Macro enregistrée le 18/02/2009 par Installateur 
    ' 
     
    ' 
    Sheets("Feuil2").Select 
    Range("D3:F8").Select 
    Selection.Copy 
    Sheets("Feuil3").Select 
    Range("C45").Select 
    Selection.Insert Shift:=xlDown 
    Range("F53").Select 
    End Sub 
     
     
    If Cells(43, 4) = "ORGANISATION DES TRAVAUX:" Then 
    Call orga1 
    Else 
     
    End If

    ci joint l'adresse du fichier

    http://dl.free.fr/gyrqeHLAx


    merci d'avance

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    si tu regarde ta macros, tu comprends très vite que si le contenu de ta cellule D43 vaut "ORGANISATION DES TRAVAUX:", alors à la fin, la procédure se rappelle elle-meme qui se rappelle elle-meme qui.........

    Je ne comprends pas pourquoi tu as ce code dans ta procédure ORGA1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Cells(43, 4) = "ORGANISATION DES TRAVAUX:" Then 
    Call orga1 
    Else 
     
    End If
    Tu viens de réinventer la boucle infinie.....
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    salut Charlyfanny

    vu qu'il n'y a pas de EndSub, je suppose que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Cells(43, 4) = "ORGANISATION DES TRAVAUX:" Then 
    Call orga1 
    Else 
     
    End If
    n'est pas dans ta macro, mais plutot dans ta cellule? je me trompe?
    Sinon, il faudrait peut-etre essayer de mettre une condition supplémentaire, genre une variable qui se met à 1 la 1ère fois que la macro est exécutée, et qui ensuite se remet à 0 dès qu'on change le contenu de la cellule.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    merci de vos reponses mais est ce que vous pourriez me faire un exemple pour que je comprenne mieux
    merci d'avance

    en fait la fonction est dans une feuille et non dans le module, j'appelle orga depuis la fonction if de ma feuille. de plus je ne sais pas comment definir une variable , voilà j'aurais besoin d'un petit peu d'aide.

    encore merci

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 902
    Points
    55 902
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par alainpinpin Voir le message
    salut Charlyfanny

    vu qu'il n'y a pas de EndSub, je suppose que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Cells(43, 4) = "ORGANISATION DES TRAVAUX:" Then 
    Call orga1 
    Else 
     
    End If
    n'est pas dans ta macro, mais plutot dans ta cellule? je me trompe?
    Tu as déjà essayé de mettre cela dans une cellule???
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    elle est dans la feuille 3 de vba et ma fonction dans un module. est ce que c'est la reponse que tu attendais?.??
    cordialement

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 902
    Points
    55 902
    Billets dans le blog
    131
    Par défaut
    CharlyFanny,

    Et si tu nous expliquais *en français* ce que tu souhaites réaliser, car je pense, au vu de ton classeur, qu'il y a pas mal de choses à améliorer
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    re-salut Charlyfanny

    j'ai regardé ton fichier afin de mieux comprendre ton problème. En fait j'ai pas tout compris ce que tu dois faire exactement

    ceci étant dit, pour se limiter au problème auquel tu es confronté, personnellement je remplacerais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Cells(43, 4) = "ORGANISATION DES TRAVAUX:" Then 
    Call orga1 
    End If
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Cells(43, 4) = "ORGANISATION DES TRAVAUX:" Then
         If Cells(45, 4) = "" Then
              Call orga1
         End If
    End If
    en fait, il regarde la 2ème cellule en dessous de celle pour laquelle tu fais ton test. Si elle est vide, on écrit, sinon on fait rien.

    Voila, dis moi si c'est la réponse que tu attendais?

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    merci ça marche ça ne fonctionne plus jusqu'à l'infini houra
    merci merci merci

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    pour pierre fauconnier : excusez moi mon français lol
    voila ce document se fait à partir de menus deroulants dans le tableau 3 qui permettent à l'utilisateur d'etablir l'ordonnancement du document en feuille 4 en copiant et iserant des lignes faites dans le tableau 3 . j'espere que c'est plus clair.
    Le probleme evident c'est que je suis bidon avec excel ( et ça se voit) donc la construction de mon document est un peu chaotique. mais en pour pourvu que ça marche.
    enfin mon dernier probleme c'est que dans la feuille 3 j'ai mis des boutons qui m'allument ou non les entreprises partenaires . ces entreprises sont regroupés dans la feuille 2 avec des sauts de ligne dans une seule et meme cellule or quand je ne selectionne pas toutes les entreprises les lignes restent et j'aimerai qu'elles se regroupent


    voilà en tout cas un grand merci à vous

  11. #11
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    you're welcome... par contre, a ta place je ferai une tite macro pour effacer la copie que tu as faites si tu changes le choix de ton menu déroulant... Mais je sais pas trop ton but... Si ca marche comme ca, tant mieux

    beaucoup de plaisir pour la suite

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    merci est ce que tu peux donner un exemple pour que ça s'efface

    un autre probleme sur cette fonction si pourrquoi je ne peux donner le nom de ma cellule apres cells??

    merci d'avance

    le probleme lorsque j'insere c'est que le nom d mes cellules change! ( forcement!!)

    est ce que vous pouvez m'aidez??
    merci d'avance

  13. #13
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    bon, allons-y un problème après l'autre

    pour ce qui est de la liste des entreprises, change la formule dans la case F43 de ta feuille 2, c'est à dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(L7="";"";Feuil3!L7)&SI(L8="";"";CAR(10)&Feuil3!L8)&CAR(10)&Feuil3!L9&CAR(10)&Feuil3!L10&CAR(10)&Feuil3!L11&CAR(10)&Feuil3!L12&CAR(10)&Feuil3!L13&CAR(10)&Feuil3!L14&CAR(10)&Feuil3!L15&CAR(10)&Feuil3!L16&CAR(10)&Feuil3!L17&CAR(10)&Feuil3!L18&CAR(10)&Feuil3!L19&CAR(10)&Feuil3!L20  &CAR(10)&Feuil3!L21
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(Feuil3!L7="";"";Feuil3!L7)&SI(Feuil3!L8="";"";CAR(10)&Feuil3!L8)&SI(Feuil3!L9="";"";CAR(10)&Feuil3!L9)&SI(Feuil3!L10="";"";CAR(10)&Feuil3!L10)&SI(Feuil3!L11="";"";CAR(10)&Feuil3!L11)&SI(Feuil3!L12="";"";CAR(10)&Feuil3!L12)&SI(Feuil3!L13="";"";CAR(10)&Feuil3!L13)&SI(Feuil3!L14="";"";CAR(10)&Feuil3!L14)&SI(Feuil3!L15="";"";CAR(10)&Feuil3!L15)&SI(Feuil3!L16="";"";CAR(10)&Feuil3!L16)&SI(Feuil3!L17="";"";CAR(10)&Feuil3!L17)&SI(Feuil3!L18="";"";CAR(10)&Feuil3!L18)&SI(Feuil3!L19="";"";CAR(10)&Feuil3!L19)&SI(Feuil3!L20="";"";CAR(10)&Feuil3!L20)&SI(Feuil3!L21="";"";CAR(10)&Feuil3!L21)
    dis moi si c'est ce que tu voulais, je vais me pencher sur le reste lol

  14. #14
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    pour effacer, rajoute dans la macro de la feuille3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            If Cells(43, 4) <> "ORGANISATION DES TRAVAUX:" Then
                If Cells(45, 4) <> "" Then
                    Rows("45:50").Select
                    Selection.Delete Shift:=xlUp
                End If
            End If
    après le bout de code que je t'ai donné plus haut (à 14h52)

  15. #15
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Rows("45:50").Select
    pas bon l'instruction select, à proscrire totalement.
    Un code plus propre est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            If Cells(43, 4) <> "ORGANISATION DES TRAVAUX:" Then
                If Cells(45, 4) <> "" Then
                    Rows("45:50").Delete Shift:=xlUp
                End If
            End If
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  16. #16
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    bien vu Godzestla, je ne me souvenais plus comment faire alors je l'ai fait avec l'éditeur de macro

    merci bien pour la correction

Discussions similaires

  1. [XL-2007] Lancer une macro avec la fonction "SI"
    Par polder dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/01/2011, 17h24
  2. [XL-2007] Macro complémentaire - fonction avec argument
    Par larryj dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/05/2010, 14h10
  3. macro avec fonction
    Par arnaud.jaspart dans le forum C++
    Réponses: 1
    Dernier message: 15/04/2009, 19h29
  4. Exécution macro avec une fonction intégré
    Par kiwi31 dans le forum VBA Access
    Réponses: 13
    Dernier message: 22/05/2007, 16h18
  5. [VBA-E] macro avec fonction "TRANSPOSE"
    Par Ardeciel dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 12/06/2006, 16h11

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