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 :

Incrémenter un indice en fonction du texte d'une autre cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut Incrémenter un indice en fonction du texte d'une autre cellule
    Bonjour,

    Je souhaite créer un outils de numération de documents en fonction de leur type.
    Je m'explique, j'ai plusieurs type de document sur chaque ligne de mon tableau, ceux-ci sont en colonne A.
    - "type A"
    - "type B"
    - "type C"
    ... etc

    Je souhaite que dans la colonne B, un programme détecte le mot écrit en colonne A et me donne la valeur correspondant au nombre de fois que ce mot à été trouvé dans cette colonne A. En gros je souhaiterai incrémenter un compteur pour chaque type de document en fonction du nombre de fois que celui-ci à été rencontré dans le document.

    Au début j'avais fixé une à une les valeurs pour ne pas faire de boucles mais je préférerai une routine qui le fasse automatiquement car je dois souvent supprimer/ajouter des lignes du tableau.
    Une image permet d'illustrer mes propos, je souhaiterai que la colonne B se remplisse tout seule.

    Je n'ai pas encore de piste car il me semble que ce sera des boucles dans des boucles avec des compteurs et je ne suis pas vraiment à l'aise avec celà. J'espère avoir de bonne indications/piste afin de plonger dans ce programme et de trouver une solution grâce à votre aide précieuse

    Merci d'avance.
    Bien cordialement.
    Images attachées Images attachées  

  2. #2
    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
    Tu es ici dans la section VBA.
    Il te suffit d'utiliser en boucle (sur la colonne C) la méthode WorksheetFunction.CountIf ( rubrique WorksheetFunction.CountIf, méthode à lire dans ton aide VBA)

    Ceci dit : tu obtiendrais le même résultat en utilisant une simple formule Excel (sans VBA, donc. Et autre section de ce forum)

    Exemple :
    cette formule en B1 :
    et tirage de cette formule vers le bas

  3. #3
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut
    Bonjour et merci de votre réponse unparia.

    Cependant, j'ai essayé de le faire avec Excel avec NB.SI mais cette fonction n'incrémente ma colonne que pour un type de document, lorsque je mets plusieurs NB.SI pour chaque type de document, la fonction ajoute toute les conditions et du coup ça ne marche pas. Il faudrait arrivé à mettre un "OU" ..
    De plus lorsque j'essaie avec NB.SI.ENS ça ne marche carrément pas. C'est pour cela que je voulais coder en VBA.

    Vous me parlez de la fonction "WorksheetFunction.CountIf" , je n'ai pas non plus trouvé d'aide sur cette fonction, aviez-vous un modèle de syntaxe à mettre en oeuvre pour que la fonction fonctionne avec mes différents types de documents ?

    Bien cordialement.

  4. #4
    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
    Cependant, j'ai essayé de le faire avec Excel avec NB.SI mais cette fonction n'incrémente ma colonne que pour un type de document, lorsque je mets plusieurs NB.SI pour chaque type de document, la fonction ajoute toute les conditions et du coup ça ne marche pas. Il faudrait arrivé à mettre un "OU" ..
    Je ne vois AUCUNE RAISON pour arriver à bce que tu affirmes. D'autant que j'ai TESTE !
    Vous me parlez de la fonction "WorksheetFunction.CountIf" , je n'ai pas non plus trouvé d'aide sur cette fonction
    je ne peux qu'en conclure que tu n'as même pas ouvert ton aide VBA
    Je t'abandonne.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut
    Merci quand même..

    C'est bien désolant de venir chercher de l'aide et de se faire renvoyer de la sorte.
    En autant de mots vous auriez pu expliquer brièvement la démarche.. Mais bon..
    On sait peut-être mal compris sur ce que je recherchais car de mon côté ça ne marche pas..
    Images attachées Images attachées  

  6. #6
    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
    Bonjour, bonjour !

    VBA reste nativement en anglais.
    Donc si tu disposes de la version française d'Excel, une fonction de feuille de calculs
    (WorksheetFunction pour ceux ayant du mal avec la langue au Nord de la Manche !)
    est à rechercher dans l'aide d'Excel et en français et non dans celle du VBA !

    Et pour du code VBA l'aide n'est pas dans celle d'Excel mais dans celle du VBA ‼

    Pour trouver la correspondance d'une formule locale (française) en version native,

    il suffit d'afficher côté VBA la propriété Formula de la cellule !

    Tout ceci étant aussi expliqué dans un tutoriel de ce forum …

    Voilà, voilà !

    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En plus des fonctions natives du langage VBA, il est également possible d'utiliser certaines fonctions d'Excel, toutes celles qui n'ont par leurs équivalent en VBA comme par exemple VLookup (RECHERCHEV) ou encore CountIf (NB.SI). En VBA, on fait appel à ces fonctions en utilisant l'objet WorksheetFunction.
    La syntaxe est la même que dans Excel

    Pour l'aide dans l'éditeur VBA, tu places ton curseur sur WorksheetFunction et tu cliques sur la touche F1
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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
    Public Dico As Object
    Property Let Article(Art As String, value As Variant)
    If TypeName(Dico) = "Nothing" Then Set Dico = CreateObject("Scripting.Dictionary")
    Dico(Art) = value
    End Property
    Property Get Article(Art As String) As Variant
    If TypeName(Dico) = "Nothing" Then Set Dico = CreateObject("Scripting.Dictionary")
    Article = Dico(Art)
    End Property
     
     
    Sub test()
    Set Dico = Nothing
    For i = 1 To 10
        Article("toto") = Article("toto") + 1
        Debug.Print Article("toto")
    Next
    End Sub

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cependant, j'ai essayé de le faire avec Excel avec NB.SI mais cette fonction n'incrémente ma colonne que pour un type de document, lorsque je mets plusieurs NB.SI pour chaque type de document, la fonction ajoute toute les conditions et du coup ça ne marche pas. Il faudrait arrivé à mettre un "OU" ..
    De plus lorsque j'essaie avec NB.SI.ENS ça ne marche carrément pas. C'est pour cela que je voulais coder en VBA.
    Sans expliquer les conditions attendues difficile d'obtenir de l'aide. Plutôt que NB.SI.ENS il y a certainement une solution avec le fonction SOMMEPROD
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    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
    1) L'exemple de formule que j'ai donné dans ma toute première réponse marche parfaitement.
    2)
    Cependant, j'ai essayé de le faire avec Excel avec NB.SI mais cette fonction n'incrémente ma colonne que pour un type de document, lorsque je mets plusieurs NB.SI pour chaque type de document, la fonction ajoute toute les conditions et du coup ça ne marche pas. Il faudrait arrivé à mettre un "OU" ..
    j'ai pourtant expliqué ceci :
    et tirage de cette formule vers le bas
    Nul besoin de réécrire la formule à chaque fois. En l'étirant vers le bas, elle s'adapte SEULE à tous tes "types" en colonne A
    Mon exemple commençait en ligne 1. Toi, tu commences en ligne 2. -->> et donc --->>
    1) tu mets cette formule en B2 :
    et
    2) tu l'étires vers le bas autant que de besoin. Elle "s'ajustera seule" !
    Sais-tu étirer vers le bas ?
    Aparremment non.
    Alors : une fois le 1) fait :
    a) tu copies B2. (clique droit -->> copier)
    b) tu sélectionnes en colonne B, à partir de B3 autant de lignes que nécessaires et tu y colles ton copié. (clic droit -->> coller)
    Rien de plus et c'est élémentaire. Pour aller au-delà, il me faudrait venir sur ta chaise et à ton clavier. Et cela, je ne saurais le faire en dépit de toute la volonté du monde.

  11. #11
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut
    Merci à tous.

    Unparia merci à toi, j'avais pas du tout pensé à mettre comme conditions la cellule en première colonne, j'avais fixé le type "A" dans la formule d'où mon problème.

    Merci encore à tous et désolé d'avoir posé une question assez simple a ce que je vois. Je comptais le faire en VBA mais en formule Excel s'était tellement plus simple.

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

Discussions similaires

  1. [XL-2007] Macro remplir une cellule en fonction du contenu d'une autre cellule
    Par Coco_O dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/05/2024, 16h39
  2. Réponses: 0
    Dernier message: 05/08/2015, 15h40
  3. Copier un texte dans une autre cellule texte
    Par Jovan dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/11/2014, 15h50
  4. Réponses: 6
    Dernier message: 22/03/2013, 18h04
  5. Réponses: 2
    Dernier message: 04/05/2012, 07h50

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