Macro Excel VBA pour modifier les champs vides dans une colonne à 'Vérifié' (Chaîne) en fonction de différents critères de search

Bonjour, je suis vraiment nouveau dans les macros VBA et j'apprécierais toute aide à ce sujet.

J'ai besoin d'écrire une macro pour modifier la valeur d'une colonne en «vérifié» en fonction de différents critères de search. Mon besoin est que l'une des valeurs des colonnes doit être automatiquement marquée comme vérifiée en fonction des critères de search qui searchnt l'existence de numéros de série contenus dans une string dans une colonne dans les valeurs de string d'autres colonnes.

Aidez-moi à créer une macro pour accomplir cette tâche.

Je suis désolé de dire que je ne peux pas partager le code ou joindre une capture d'écran pour expliquer davantage le scénario en raison de raisons de confidentialité.

Explication détaillée

Colonne à modifier: Commentaires (initialement vide)

Colonnes utilisées pour les critères de search: Peut être une colonne dans le tableau existant.

Critères de search:

  • Une sous-string à partir de la colonne de reference (essentiellement un numéro avec 6 numbers sera sélectionné comme key de search)

Remarque: Il n'y a pas de format spécifique suivi de cette colonne (et nous ne pouvons rien en faire), par exemple: Dans une colonne, l'input sera 35567890-DEF-GHJ tandis que dans l'autre, elle sera comme Ref: 35567890– et dans une autre colonne champ ce sera comme CEK 35567890.

  • La sous-string doit être vérifiée non seulement pour les inputs dans le même coulmn mais avec le contenu de la table entière. Fondamentalement, c'est comme la fonction find dans l'excellence.

  • Si une correspondance est trouvée, je dois append les valeurs dans les inputs de débit et de crédit et voir si le résultat est 0. Si le résultat est nul, je dois entrer 'checked' dans le champ de commentaires qui permet des valeurs de string.

Ce n'est pas une macro complète, mais continue de fonctionner.

Macros utilisées uniquement pour extraire le code produit. Pour les process restants, j'ai utilisé des fonctions existantes, effectué une fonction de comparaison sur le montant net et ensuite utilisé un simple si pour marquer la colonne comme vérification.

Macro utilisée pour extraire le code produit.

Public Function getProductCode(source As Ssortingng) As Ssortingng Dim rExp As Object, allMatches As Object, match As Object Dim result As Ssortingng: result = "" Set rExp = CreateObject("vbscript.regexp") With rExp .Global = True .MultiLine = False .Pattern = "(?:^|\D)(\d{7,8})(?!\d)" End With Set allMatches = rExp.Execute(source) For Each match In allMatches result = result + match.SubMatches.Item(0) Next getProductCode = result End Function 

Une nouvelle colonne 'Référence' a ensuite été créée sur laquelle la macro a été utilisée en passant la colonne spécifique et le code de produit extrait est stocké ici.

Après cela, une fonction a été utilisée pour find des inputs en double et résumer le nombre total de produits vendus. La formule que j'ai utilisée est la suivante:

 =ROUND(SUMIFS([Total],[Reference],[@Reference]),2)=0 

Enfin, j'ai utilisé un simple si pour marquer la colonne tel que vérifié si le résultat généré précédemment (dans l'état de la colonne) est vrai.

 =IF([@Column1]=TRUE, "Checked", "") 

C'est ainsi que je l'ai fait.

Il pourrait y avoir une meilleure façon de le faire. Mais si quelqu'un d'autre est confronté au même problème, cela aidera.