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 :

VBA excel Definir une zone de texte de maniére générique


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Mai 2018
    Messages : 37
    Par défaut VBA excel Definir une zone de texte de maniére générique
    Bonjour à tous,

    Je bloque sur une question, comment puis je définir toutes zones de texte de maniére numérique, pour exemple comment puis je remplacer des mots tel que "mistake, wrong, cube , etc ..." par un code générique qui me permet de remplacer toutes zone de texte dans une cellule?

    Pour le moment j'utilise le code ci-dessous mais l'inconvénient est que je dois connaitre à l'avance les mots à remplacer et cela n'est pas toujours possible et m'oblige à faire de trés long 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
     
     
    Sub ReplaceText1()
     Dim t, i&, x$
     With Feuil3.[A1].CurrentRegion.Columns(29).Resize(, 7)
         t = .Value2
         For i = 2 To UBound(t)
             x = t(i, 1)
             If x <> "" And t(i, 7) Like "*/IT/*" Or t(i, 7) Like "*/DE /*" Or t(i, 7) Like "*/CZ /*" Or t(i, 7) Like "*/FR/*" Or t(i, 7) Like "*/BE /*" Or t(i, 7) Like "*/HU /*" Or t(i, 7) Like "*/SK /*" Or t(i, 7) Like "*mistake*" Or t(i, 7) Like "*Reinv*" Or t(i, 7) Like "*Wrong*" Or t(i, 7) Like "*Evante*" Or t(i, 7) Like "*Offergeld*" Or t(i, 7) Like "*NR*" Or t(i, 7) Like "*Cube*" Or t(i, 7) Like "*Item*" Or t(i, 7) Like "*parts*" Or t(i, 7) Like "*Invoice*" Or t(i, 7) Like "*IMPATTINATURA*" Or t(i, 7) Like "*HOMOLOGATIONS*" Or t(i, 7) Like "*markup*" Or t(i, 7) Like "*maitenance*" Or t(i, 7) Like "*JIS*" Or t(i, 7) Like "*Jayan*" Or t(i, 7) Like "*packaging*" Or t(i, 7) Like "*/CZ/*" Or t(i, 7) Like "*/BE/*" Or t(i, 7) Like "*clic*" Then _
                 t(i, 7) = Format("1/" & Mid(x, 5, 2), "mm/") & Left(x, 4)
         Next
         .Columns(7).NumberFormat = "mm/yyyy" 'format Date
         .Columns(7) = Application.Index(t, , 7)
     End With
     End Sub
    Merci d'avance si une personne peux m'aider à avancer.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par AimeDija Voir le message
    Bonjour,

    Il vous suffit de créer une table d'occurrences, de créer une deuxième boucle à l'intérieur de la première pour vérifier leur présence.

  3. #3
    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
    il y a certainement un moyen avec un filtre avec un array comme critere non ?

    sinon oui il y a un moyen re ramener ca a un seul test une seule boucle en prenant les chose a l'envers
    c'est a dire chercher l'occurence non pas dans la cellule mais dans une chaine (la concatenation de tes mots)
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim crit$
    crit = "mistake,wrong,cube"
    For i = 1 To 10
    If Cells(i, 1) <> "" And crit Like "*" & Cells(i, 1).Text & "*" Then MsgBox "coucou" & Cells(i, 1).Address
    Next
    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

  4. #4
    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
    du reste aussi un petit regex ferait tres bien le boulot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
        Dim regex As Object, mot_recherché$
        Set regex = CreateObject("VBScript.RegExp"): 'creation regex
        mot_recherché ="[(mistake)|(wrong)|(cube)]"
    With regex: .Global = True: .IgnoreCase = True: .Pattern =mot_recherché: End With
            For i = 1 To 10
             If regex.Execute(Cells(i, 1).Text).Count > 0 Then MsgBox Cells(i, 1).Address
        Next
    End Sub
    que l'on peut appliquer a une variable tableau bien sur
    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

  5. #5
    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
    en l'occurence dans ton projet le pattern du regex serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mot_recherché = "((/)IT|DE|CZ|FR|BE|HU|SK +([\s|()]+/))|/wrong/|mistake|Reinv|Evante|Offergeld|NR|cube|Item|parts"
       mot_recherché = mot_recherché & "|Invoice|IMPATTINATURA|HOMOLOGATIONS|markup|maitenance|JIS|Jayan|packaging"
    donc plutot que de faire 9999 (innomables)test like j'en fait qu'un avec le regex
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub ReplaceText1()
        Dim regex As Object, mot_recherché$
        Set regex = CreateObject("VBScript.RegExp"):    'creation regex
        mot_recherché = "((/)IT|DE|CZ|FR|BE|HU|SK +([\s|()]+/))|/wrong/|mistake|Reinv|Evante|Offergeld|NR|cube|Item|parts"
        mot_recherché = mot_recherché & "|Invoice|IMPATTINATURA|HOMOLOGATIONS|markup|maitenance|JIS|Jayan|packaging"
     
        With regex: .Global = True: .IgnoreCase = False: .Pattern = mot_recherché: End With
        For i = 1 To 10
            Set matchs = regex.Execute(Cells(i, 1).Text)
            If matchs.Count > 0 Then MsgBox Cells(i, 1).Address & "-->>>" & matchs(0)
        Next
    End Sub
    il te faut pas grand chose pour l'adapter a ton tablo
    c'est quand meme plus abordable comme code non? ca pique moins 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

  6. #6
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Mai 2018
    Messages : 37
    Par défaut
    Bonjour Eric,
    Bonjour Patrick,

    Un grand merci pour votre aide, j'ai choisi la méthode du dernier post de Patrick car en effet cela est vraiment plus abordable.

    je vous suouhaite une bonne soirée et merci encore

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

Discussions similaires

  1. [VBA Excel] Parcourir une zone de cellules
    Par Jipété dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 27/11/2006, 09h38
  2. [VBA-E]Imprimer une zone de texte
    Par illight dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/10/2006, 07h30
  3. [VBA-E]Definir une zone d'impression
    Par byflo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/06/2006, 09h29
  4. [VBA][Excel] importer une zone délimitée de texte
    Par Amanck dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2005, 14h59
  5. [VBA][Excel]Supprimer une partie du texte d'une grosse liste
    Par annedeblois dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/09/2005, 17h15

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