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 VBA remplacer une liste de mot par X [XL-2010]


Sujet :

Macros et VBA Excel

  1. #21
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut RE
    Ben OUI!!! je les veux ces trois lignes
    et ensuite pour ABCbourse J'ai une surprise pour toi je la mettrais sur le post en question
    je veux mes trois lignes !!!!!!!!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #22
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    En préambule, je précise dans des discussions pourtant récentes j'ai déjà posté de similaires démonstrations …

    Avant d'attaquer un code, la question est y-a-t-il moyen via une fonctionnalité d'Excel ou une formule ?
    Ici vu la pauvreté de la présentation initiale même avec l'information des espaces à la fin des mots du post #4
    la réponse est oui ! Toutefois je précise mon protocole de tests : chaque liste commence en A1 dans chaque feuille.

    Donc avant d'attaquer le code, il faut déjà tester une formule dans la première feuille de calculs.
    Avec l'histoire des espaces, la fonction de feuille de calculs EQUIV s'impose, formule en C1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTNA(EQUIV(SUPPRESPACE(A1)&"*";Feuil2!$A$1:$A$2;0));"x";A1)
    A recopier vers le bas jusqu'en C4 …

    Sélectionner la cellule C1 puis côté VBE on regarde la formule en version native via la fenêtre Exécution :

    En validant cette commande, la formule en anglais apparaît : =IF(ISNA(MATCH(TRIM(A1)&"*",Feuil2!$A$1:$A$2,0)),"x",A1)
    Au passage, tout ceci est déjà dans un tutoriel de ce forum …

    Maintenant le code va s'articuler autour de cette formule grâce à la puissante méthode Evaluate,
    une première dédicace spéciale Patrick :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Demo00()
        With Feuil1.Cells(1).CurrentRegion.Columns(1):  .Value = .Parent.Evaluate("IF(ISNA(MATCH(TRIM(" & .Address & ")&""*""," & Feuil2.Cells(1).CurrentRegion.Columns(1).Address(External:=True) & ",0)),""x""," & .Address & ")"):  End With
    End Sub
    Là c'est sûr, un débutant fuit en courant et même pour un expérimenté côté lisibilité …

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Demo0()
        With Feuil1.Cells(1).CurrentRegion.Columns(1)
          .Value = .Parent.Evaluate("IF(ISNA(MATCH(TRIM(" & .Address & ")&""*""," & Feuil2.Cells(1).CurrentRegion.Columns(1).Address(External:=True) & ",0)),""x""," & .Address & ")")
        End With
    End Sub
    Cela fait un peu moins peur mais ce n'est pas encore cela côté lisibilité, maintenance, …

    Je préfère pour la lisibilité utiliser une constante pour la formule
    - j'en profite pour rappeler de doubler les guillemets de la formule au sein de la chaîne -
    dans laquelle les adresses fixes des plages de cellules seront remplacées par des #1 & #2
    afin qu'elle évolue selon la dynamique des plages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Demo1a()
         Const F = "IF(ISNA(MATCH(TRIM(#1)&""*"",#2,0)),""x"",#1)"
        With Feuil1.Cells(1).CurrentRegion.Columns(1)
          .Value = .Parent.Evaluate(Replace$(Replace$(F, "#1", .Address), "#2", Feuil2.Cells(1).CurrentRegion.Columns(1).Address(External:=True)))
        End With
    End Sub

    Côté lisibilité avec une ligne supplémentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Demo1b()
           Const F = "IF(ISNA(MATCH(TRIM(#1)&""*"",#2,0)),""x"",#1)"
               AD$ = Feuil2.Cells(1).CurrentRegion.Columns(1).Address(External:=True)
        With Feuil1.Cells(1).CurrentRegion.Columns(1)
            .Value = .Parent.Evaluate(Replace$(Replace$(F, "#1", .Address), "#2", AD))
        End With
    End Sub
    « C'est simple ! » comme il dit le p'tit gars de chez Renault !


    Une variante en nettoyant les espaces dans la seconde feuille via la fonction SUPPRESPACE et
    alors la fonction NB.SI est utilisable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Demo2a()
           Const F = "IF(COUNTIF(#2,TRIM(#1)),#1,""x"")"
        With Feuil2.Cells(1).CurrentRegion.Columns(1)
            .Value = Application.Trim(.Value)
               AD$ = .Address(External:=True)
        End With
        With Feuil1.Cells(1).CurrentRegion.Columns(1)
            .Value = .Parent.Evaluate(Replace$(Replace$(F, "#1", .Address), "#2", AD))
        End With
    End Sub

    Ou en nettoyant les deux feuilles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Demo2b()
       Const F = "IF(COUNTIF(#2,#1),#1,""x"")"
        With Feuil2.Cells(1).CurrentRegion.Columns(1)
            .Value = Application.Trim(.Value)
               AD$ = .Address(External:=True)
        End With
        With Feuil1.Cells(1).CurrentRegion.Columns(1)
            .Value = Application.Trim(.Value)
            .Value = .Parent.Evaluate(Replace$(Replace$(F, "#1", .Address), "#2", AD))
        End With
    End Sub
    Pour conclure, penser Excel avant VBA permet aux débutants de s'en sortir plus facilement,
    en tout cas pour ceux ayant une p'tite base côté Excel !

    Voilà, voilà !

    _________________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #23
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    A1 patricktoulon :
    A toujours te précipiter comme tu le fais, tu dérapes sans même t'en rendre compte.
    Tu devrais lire/relire plus attentivement ce que j'ai écrit en mon 3) de mon message.
    http://www.developpez.net/forums/d15...x/#post8686797
    Sa lecture très attentive aurait dû te mettre la puce à l'oreille et éviter de commettre une erreur prévisible (que tu ne peux toutefois prévoir sans affiner l'analyse) , que je pointerai du doigt au retour du demandeur (qui a par ailleurs lui-même montré une autre carence d'analyse que je l'inviterai à corriger également).
    Je ne tiens absolument pas à intervenir à nouveau sur ces tâtonnements successifs tant que le demandeur ne sera pas revenu. Il va déjà être assez "noyé" dans ce "tas" de bouts de code (pas l'idéal pour un débutant, ce genre de noyade)

  4. #24
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Personnellement je me suis tenu à l'énoncé, à savoir un mot par cellule parfois avec un espace à la fin …

  5. #25
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Marc-L
    Et tu es ce faisant très sage.
    L'a moins été le demandeur, avec sa malheureuse formulation :
    et en plus je viens de voir que j'ai des espaces derrière les mots, y a t il moyen de dire que la cellule contient le mot et non qu'elle est égale ?
    qui a eu pour résultat (on le voit bien et on le verra beaucoup mieux bientôt) de nombreux "égarements" trop hâtifs.
    La solution finale VBA (une fois corrigée cette formulation) sera fort heureusement très simple et sans rien d'autre que CountIf.

  6. #26
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re et moi les fomule c'est du walouh!!!

    et merci pour la dédicacé

    j'essai de décortiquer tout ca



    QConst F = "IF(ISNA(MATCH(TRIM(#1)&""*"",#2,0)),""x"",#1)"

    c'est quoi #1 et #2 je suppose que #1 c'est la cellule a modifier donc en l'occurrence chez moi "A3" en feuille 1 mais #2 pas compris moi le 2eme #1 je suppose que c'est le même au cas ou l'existence est positive
    donc #2 connais pas

    Q° 2 c'est quoi en fait alors "f" en terme de (typename )

    Q° 3 comment fait tu pour cumuler les formule j'y arrive jamais même avec les outils la dessus il n'y a pas d'aide

    Q° 4 evaluate lui il m'aime pas .ca marche jamais chez moi malgré toute tes démo passées et présentes ( erreur incompatible j'ai tout essayé ) c'est ca qui me rends fou

    Q° 5 External:=True c'est qui celui la???

    Q°6 si je comprends bien tu évalue F c'est donc un string

    j'aimerais bien un jour que chez moi ca fonctionne ton evaluate

    au passage chez moi marche pas !!!sur le gros pc W7 off 2007 mais sur le portable oui avec W10 off 2010 pourquoi?
    j'ai changé juste la cells de départ chez moi c'est A3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Feuil1.Cells(3, 1).CurrentRegion.Columns(1)
          .Value = .Parent.Evaluate(Replace$(Replace$(F, "#1", .Address), "#2", Feuil2.Cells(1).CurrentRegion.Columns(1).Address(External:=True)))
        End With
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #27
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    • R1 : comme expliqué entre Demo0 & Demo1a, #1 & #2 représentent les adresses des plages de cellules
    (respectivement pour Feuil1 & Feuil2), voir le résultat de la chaîne à jour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Replace$(Replace$(F, "#1", .Address), "#2", Feuil2.Cells(1).CurrentRegion.Columns(1).Address(External:=True))
    La formule de calculs d'Excel pour une cellule de Feuil1 est appliquée en VBA à la colonne de Feuil1, voir R3 …

    • R2 : Q6 ! Oui F est déclarée de facto en String par VBA, vérifiable dans la fenêtre des Variables locales durant l'exécution …

    • R3 : la méthode Evaluate la comprend comme une formule matricielle …

    • R4 : effectue déjà un test comme moi depuis A1 pour les deux feuilles sur un nouveau classeur …

    • R5 : c'est un paramètre de la propriété Range.Address, voir l'aide VBA …
    Avec ce paramètre c'est Feuil2!$A$1:$A$2 et sans c'est juste $A$1:$A$2 !
    Comme la méthode Evaluate porte sur Feuil1, la plage de cellules de Feuil2 doit référencer cette Feuil2,
    comme dans la formule de la feuille de calculs du départ …

    • R6 : la plage commence aussi en A3 pour Feuil2 ? Sinon voir R4 …

  8. #28
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    OK
    j'ai compris j'avais fait un debug déjà pour comprendre

    mais evaluate marche toujours pas chez moi

    erreur incompatible type

    je précise que je travaille sur un fichier vierge donc aucunes interaction avec d'éventuelles autre macro ou variables

    je viens d'aller refaire un tour chez boisgontier jacques et il donne des exemples simples et eux non plus ne fonctionnent pas chez moi toujours la même erreur

    non c'est vraiment chez moi qu'il y a un truc que cloche

    ca fait des mois!!!! que je viens et reviens sur ce truc

    j'ai installé réinstaller office ,même formater complètement réinstaller intégralement rien n'y fait c'est pour ca que je m'énerve
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #29
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bon ca marche pas mais tout de meme un espoir

    exemple simple
    celuicifonctionne pas (evaluate de mes deux!!!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub essai()
     a = Evaluate("{1,2,3;4,5,6;7,8,9;10,11,12}")
     MsgBox UBound(a, 1)
     MsgBox UBound(a, 2)
    End Sub
    'ou
    celui ci fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub essai2()
    a = [{1,2,3;4,5,6;7,8,9;"aa","bb","cc"}]
     MsgBox a(3, 1)
     MsgBox a(4, 1)
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #30
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Pas de souci de mon côté sous 2003 comme sous 2010.

    J'attends qu'un portable rentre sous 2007 pour vérifier, peut-être en fin de semaine …

    « Cela ne marche pas » : tu as un message d'erreur ?

  11. #31
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour Marc

    purée ca m'a tellement bouffer le mou jusqu'à 3 heure du Mat mais j'y suis arrivé

    j'ai viré un bonne 15 aine de mise a jour office et l'une d'entre elle devait bloquer quelque chose maintenant j'ai mon tableau

    et le pire c'est que se sont les première mises a jour qui foute le boxon puisque j'ai formaté et réinstallé il y a moins d'un mois après avoir rétrograder W10 /W7

    et la rétrogradation ne c'était pas bien passé

    bon content moi on va pouvoir avancer
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #32
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    J'attends qu'un portable rentre sous 2007 pour vérifier,
    Fait (testé) . Fonctionne en Excel 2007

    A patricktoulon : si la notation entre crochets, qui implique evaluate et affranchit des guillemets (intérieur implicitement considéré comme chaîne de caractères), c'est que sur ta machine, le mot réservé Evaluate a peut-être été accidentellement dévoyé un jour (dans un addin, ou ailleurs)
    Essaye avec Application.Evaluate (passera peut-être avec cette précision)

  13. #33
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour unparia
    non je n'ai jamais utiliser un addin avec une fonction ou quoi que se soit d'autre avec "evaluate"

    c'était bien les mises a jours qui me posait soucis j'avais même pas vu un sp3 pour office ( j'ai W updt) en auto même les facultatives j'ai modifier ce point et masquer ces mises a jour
    car après les avoir enlevé il a pas fallu longtemps pour que l'on me les re propose
    je les aient viré et même des macros qui fonctionnaient plus re fonctionnent

    après diverses recherche il semblerait que ce sp3 ai causé beaucoup de petit soucis notamment avec des controls activX

    i' me very happy

    c'est bon maintenant j'ai bien les deux méthodes qui fonctionnent


    je vais pouvoir me mettre aux formules de Marc qui piquent les yeux
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  14. #34
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Cela me rappelle récemment sur un ordinateur l'appel d'un ActiveX est en erreur en VBA
    (sans modifier le code ayant pourtant fonctionné auparavant) mais sans souci en VBScript …

  15. #35
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    a la place de ta ligne evaluate
    y aurait -il un moyen de le faire avec la 2 ° méthode avec les ("[]") a moins que evaluate de fasse pas que créer le tableau ???????
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #36
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    La notation entre crochets est l'écriture simplifiée de la méthode Evaluate, voir l'aide VBA.
    Par exemple [{1,2,3}] est équivalent à Evaluate("{1,2,3}")

    Par contre quand il y a besoin d'une opération comme une concaténation par exemple, seule fonctionne Evaluate !
    Exemple de la ligne de code n°10 du deuxième code de ce post.
    (Voir aussi au passage le post n°20 utilisant une formule directement dans les cellules sans Evaluate …)

  17. #37
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Le demandeur revient enfin, je n'avait pas reçu de mail de réponse donc je ne m'affolais pas.

    Je viens donc de lire vos réponses : UN GRAND MERCI à vous !

    Je vois ce que je peux faire avec toutes ses infos, je n'ai vraiment pas eu le temps de m'y plonger et reviens vers vous.

    Encore Merci

  18. #38
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Bonjour à tous

    Merci à tous.

    Comme je vous l’ai dit, je suis bleue de chez bleue.
    J’ai fait une macro : pour supprimer des colonnes contenant des mots.
    Seulement j’ai 10 feuilles avec des mots différents. (feuille 2)
    Et des mots qui changent tous les mois (feuille 1)
    C’est pourquoi je vous demande cette macro.

    Supprimer des colonnes c’est facile,
    Remplacer des mots par X le bout du monde pour moi, mes cours d'algo sont très très loin.

    Bref, j’ai essayé :

    * Macro de unparia mais ca ne fonctionne pas « Erreur de compilation : instruction incorrecte à l’intérieur d’une procéure »

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim lader As Long, c As Range
      lader = Worksheets("Feuil2").Range("A" & Rows.Count).Row
      For Each c In Worksheets("Feuil1").Columns(1).SpecialCells(xlCellTypeConstants)
      If WorksheetFunction.CountIf(Worksheets("Feuil2").Range("A1:A" & lader), RTrim(c.Value) & "*") = 0 Then
         c.Value = "x"
      End If
    Next

    * j’ai essayé : celle de de patricktoulon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub patrick2()
        Dim c As Range, dico As Object, t
        With Sheets(2): t = Join(Application.Transpose(.Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)).Value), "|"): End With
        Debug.Print t
        For Each c In Worksheets("Feuil1").Columns(3).SpecialCells(xlCellTypeConstants)
                If Not t Like "*" & c.Value & "*" And Not c Like "X" Then i = i + 1: Worksheets(1).Columns(3).Replace What:=c.Value, Replacement:="X"
        Next
        Cells(1, 4) = i & " replacement global"
    End Sub

    Ca fonctionne mais mes colonnes ne sont pas placées ainsi et je ne sais pas modifier la macro
    Feuille 1 mes mots sont sur la ligne 1 : en cellules G 1 à EN 1
    Feuille 2 mes mots sont sur la colonne 2

    * Marc-L : Tu m’as complètement pommée
    J’ai pourtant essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTNA(EQUIV(SUPPRESPACE(A1)&"*";Feuil2!$A$1:$A$2;0));"x";A1)
    Mais là non plus mes cellules ne sont pas aux endroits des formules.


    MERCI
    MERCI aussi à Eric4459? à jurassic pork ... et désolée si j'en oublie.

  19. #39
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Comme préconisé dans les règles de ce forum (y a même une démo pour les moins doués !),
    merci de baliser chaque code via l'icône # !


    Sinon ce que l'on a proposé est au niveau de la présentation initiale :
    commencer par tester avec une feuille correspondant donc à cette "présentation" …

    Une fois que cela fonctionne avec la feuille telle que décrite dans la présentation initiale,
    il est simple d'adapter formule ou code en fonction des données réelles.
    Juste en lisant et en suivant le post #22 par exemple …

  20. #40
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Bonsoir Marc-L

    Désolée, mais je ne comprends rien qu'est ce que
    "la présentation initiale" ?
    "tester avec une feuille correspondant donc à cette présentation" ?
    "le post #22" ?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [XL-2007] Code VBA remplacement automatique par une liste de mots
    Par summerfllore dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 23/06/2016, 09h19
  2. Recherche et remplacement d'une liste de mots en VBA
    Par jawa123 dans le forum VBA Word
    Réponses: 3
    Dernier message: 07/06/2016, 23h32
  3. Tri d'une liste de mots par ordre croissant de leur taille
    Par ConanGuy dans le forum Général Python
    Réponses: 3
    Dernier message: 20/12/2015, 23h34
  4. [RegExp] replacer une liste de mot par un seul
    Par lodan dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/06/2011, 09h34
  5. [Debutant]Remplacer une liste de valeur par une liste de val
    Par Sebbo dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 31/03/2006, 13h15

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