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 Correcteur orthographe sur une ligne d'un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Profession indépendande
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Profession indépendande
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut Macro Correcteur orthographe sur une ligne d'un tableau
    Bonjour
    Je souhaite crée une macro qui me vérifie l'orthographe sur une seule ligne d'un tableau Excel.
    Les lignes du tableau sont sélectionnées sur 3 critères (les 3 premières colonnes), j'ai essayé d'adapter le code suivant, le correcteur s'ouvre bien mais vérifie l'ensemble des données de la feuille et non la seule ligne sélectionnée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub Orthographe()
    Sheets("Donnees").Select                'selection de la feuille de donnee
        For I = Range("A65536").End(xlUp).Row To DebLigne Step -1        'Recupere le N° de ligne à partir de la derniere écrite
            If Cells(I, 1) = Range("Donnees_1") And Cells(I, 2) = Val(Range("Donnees_2")) And Cells(I, 3) = Val(Range("Donnees_3")) Then
            Cells.CheckSpelling SpellLang:=1036
            End If
        Next I
    End Sub
    Je précise que je suis plus un bricoleur de code absolument pas un "codeur" averti, je n'ai pas écris le code ci-dessus mais récupéré et tenté de l'adapter.
    Merci de votre aide
    Joël

  2. #2
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonsoir,
    Pas testé mais tu pourrais essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For I = Range("A65536").End(xlUp).Row To DebLigne Step -1        'Recupere le N° de ligne à partir de la derniere écrite
            For J= 1 to 3
               If Cells(I, 1) = Range("Donnees_1") And Cells(I, 2) = Val(Range("Donnees_2")) And Cells(I, 3) = Val(Range("Donnees_3")) Then
               Cells(I,J).CheckSpelling SpellLang:=1036
               End If
          Next J
        Next I
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  3. #3
    Membre confirmé
    Homme Profil pro
    Profession indépendande
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Profession indépendande
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut
    Bonjour Eric et Merci

    Il ne se passe plus rien, le correcteur ne s'ouvre plus.

    (Concernant le message précédent supprimé, j'avais fait trop vite et mal orthographié les noms, d'ou erreur 1004.)
    Joël

  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
    re
    bonsoir

    perso je sais pas mais il me semble que "val(...)" donne une valeur numérique alors le correcteur walouh walouh!!!!!!

    supprime tes val
    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
    Membre confirmé
    Homme Profil pro
    Profession indépendande
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Profession indépendande
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut
    Bonsoir Patrick
    Merci

    Ca ne change rien, ni sur mon code, ni sur celui d'Eric. Avec ou sans Val, mon code continue à scanner le tableau complet et le code d'Eric n'ouvre plus le vérificateur d'orthographe.

    Les Val ont pour but de s'assurer que les variables prise en compte pour le sélection de la ligne soit bien au format numérique, ce n'est pas spécifiquement ces valeurs que j'ai à tester, mais une série complète de données (340) contenant un vingtaines de données texte pouvant comporter des fautes d'orthographes.

    Cdt
    joël

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Il ne faut pas utiliser val quand le séparateur décimal est la virgule. Val n'est pas foutu de reconnaître la virgule comme séparateur décimal. Et puis, pour contrôler une valeur numérique il y a IsNumeric

  7. #7
    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 oui bien vu clément
    en effet val donne que l'entier dans ces cas la: et donc résultat erroné si décimal différent
    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

  8. #8
    Membre confirmé
    Homme Profil pro
    Profession indépendande
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Profession indépendande
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut
    Bonjour Clément
    Merci de tes éclaircissements.
    J'ai enlevé les Val, sans succès pour autant, Je ne parviens par à obtenir ce que je souhaite.
    Les 2 données sur lesquels j'avais un Val sont toujours des entiers: 1;2 ou 3 pour l'un et 6 chiffres entre 000000 à 999999 pour l'autre.
    Je suis peut être complétement sur une fausse route.
    Cdt
    Joël

  9. #9
    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

    Utiliser ce genre (exemple) de notation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Range("A1")
     If Application.CheckSpelling(.Text, , msoLanguageIDFrench) = False Then
       .Font.Color = vbRed
     Else
       .Font.Color = vbBlack
     End If
    End With

  10. #10
    Membre confirmé
    Homme Profil pro
    Profession indépendande
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Profession indépendande
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut
    Bonjour
    Je reviens avec un point et joint à ce message un fichier exemple, le tableau initial est beaucoup grand, je souhaitais que le code ne fasse la vérification d'orthographe que sur la ligne correspondant aux 3 critères dans fiche.
    Merci unparia, je suis ne comprend pas comment adapter ton bout de code pour obtenir ce dont j'ai besoin.
    Je travaille à partir de l'onglet Fiche, je navigue quasiment jamais sur l'onglet Donnees en visu. Les données du tableau sont modifié par différents formulaires.

    Mon code initial ci dessous, vérifie l'ensemble de la feuille sans sélectionner une ligne (et erreur 1004 à la sortie):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub Orthographe()
    Sheets("Donnees").Select                'selection de la feuille de donnee
        For I = Range("A65536").End(xlUp).Row To DebLigne Step -1        'Recupere le N° de ligne à partir de la derniere écrite
               If Cells(I, 1) = Range("Date_Visite") And Cells(I, 2) = Val(Range("Num_Ration")) And Cells(I, 3) = Val(Range("N_Eleveur")) Then
            Cells.CheckSpelling SpellLang:=1036
            End If
        Next I
    End Sub
    Idem si j'enlève les Val
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub Orthographe2()
    Sheets("Donnees").Select                'selection de la feuille de donnee
        For I = Range("A65536").End(xlUp).Row To DebLigne Step -1        'Recupere le N° de ligne à partir de la derniere écrite
               If Cells(I, 1) = Range("Date_Visite") And Cells(I, 2) = Range("Num_Ration") And Cells(I, 3) = Range("N_Eleveur") Then
            Cells.CheckSpelling SpellLang:=1036
            End If
        Next I
    End Sub
    Le code d'Eric (sans les Val) ne fonctionne pas non plus, le vérificateur d'ortographe ne s'ouvre pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub Orthographe3()
    Sheets("Donnees").Select                'selection de la feuille de donnee
        For I = Range("A65536").End(xlUp).Row To DebLigne Step -1        'Recupere le N° de ligne à partir de la derniere écrite
            For J = 1 To 3
               If Cells(I, 1) = Range("Date_Visite") And Cells(I, 2) = Range("Num_Ration") And Cells(I, 3) = Range("N_Eleveur") Then
               Cells(I, J).CheckSpelling SpellLang:=1036
               End If
          Next J
        Next I
    End Sub
    Merci à tous pour votre aide
    Cdt
    Joël
    Fichiers attachés Fichiers attachés

  11. #11
    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
    Ce n'est pas pour rien, que je t'ai montré un exemple (à toi d'adapter ensuite).
    - Le correcteur d'orthographe ne s'affiche que si faute détectée
    - je te suggère donc de ne le lancer (par ton code de lancement) que si (par mon code)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Application.CheckSpelling(.Text, , msoLanguageIDFrench) = False

  12. #12
    Membre confirmé
    Homme Profil pro
    Profession indépendande
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Profession indépendande
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut
    Bonjour Unparia et merci

    Je ne doute pas de tes compétences et ton conseil, c'est les miennes qui sont limités dans le domaine, et de plus je ne pratique que très peu.
    J'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Orthographe3()
     
    With Sheets("Donnees")
        For I = Range("A65536").End(xlUp).Row To DebLigne Step -1       'Recupere le N° de ligne à partir de la derniere écrite
            If Cells(I, 1) = Range("Date_Visite") And Cells(I, 2) = Range("Num_Ration") And Cells(I, 3) = Range("N_Eleveur") Then
        Application.CheckSpelling(.Text, , msoLanguageIDFrench) = False
        Else
            Exit Sub
        End If
    End With
    End Sub
    J'ai un bug sur Application.CheckSpelling(.Text, , msoLanguageIDFrench) = False avec Erreur de compilation: Un appel de fonction dans la partie gauche de l'affectation doit renvoyer Variant ou Object.

    Joël

  13. #13
    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
    Tu me vois vraiment désolé, joel50, de constater (je ne peux que constater) que tu ignores apparemment ce qu'est un bloc With, ce qu'il traite et comment on l'utilise.
    Bonne continuation, mais tu devrais recommencer par les bases.

  14. #14
    Membre confirmé
    Homme Profil pro
    Profession indépendande
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Profession indépendande
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut
    Unparia
    Effectivement, comme je le précisais dans mon message, la programmation n'est pas mon métier, je bricole un peu et je pratique peu, juste quand j'ai besoin de faire une évolution dans mon fichier. Et mon emploi du temps ne me permet pas de faire bien plus.

    Merci tout de même de ton aide.

    Cordialement
    Joël

  15. #15
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Joel,
    Comme le suggère Unparia, tu devrait lire ceci
    http://silkyroad.developpez.com/

    Bonne lecture
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  16. #16
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub Orthographe()
    Sheets("Donnees").Select                'selection de la feuille de donnee
        For I = Range("A65536").End(xlUp).Row To DebLigne Step -1        'Recupere le N° de ligne à partir de la derniere écrite
            If Cells(I, 1) = Range("Donnees_1") And Cells(I, 2) = Val(Range("Donnees_2")) And Cells(I, 3) = Val(Range("Donnees_3")) Then
            rows(I).Cells.CheckSpelling SpellLang:=1036
            End If
        Next I
    End Sub
    cells selectionne toutes les cellules, peu importe le if avant.
    En ajoutant rows(I) devant tu ne selectionne que les cellules de la ligne I

  17. #17
    Membre confirmé
    Homme Profil pro
    Profession indépendande
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Profession indépendande
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut
    Bonjour Halaster

    Excellent, c'est ce que je voulais obtenir, ça m'a vraiment permis d'avancer.
    Merci bcp, et merci de ta compréhension.
    J’essayerai de me rappeler, mais je pratique très peu. Avec peu d'expérience et de protique, je cherche souvent dans la mauvaise direction

    Cdt
    Joël

    On peut certainement faire mieux, comme le proposent Eric et Unparia, mais mon emploi du temps ne me permet pas, peut être un jour...
    Merci pour tout

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

Discussions similaires

  1. Positioner le scroolbar sur une ligne d'un tableau
    Par dellys2 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/02/2011, 16h22
  2. Mettre le focus sur une ligne d'un tableau
    Par HelloWorldAjaxYou dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/02/2011, 17h14
  3. [MaxDB] plusieures lignes du maxdb_fetch_array sur une ligne d'un tableau
    Par nicoda dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/02/2008, 16h52
  4. lien sur une ligne d'un tableau
    Par foffa dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/09/2006, 15h11

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