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 :

Passage d'un cas particulier à l'étude d'une colonne [Débutant(e)]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut Passage d'un cas particulier à l'étude d'une colonne
    Bonjour à tous,

    Débutant sur Excel j'ai laborieusement construit une macro pour effectuer les actions suivantes :
    1) Extraire les Adresses mail dans les cellules de la colonnes F
    --> Les cellules de la colonne F ont le format suivant : XXXXXX@yyyy.fr: NOM, Prénom$XXXXXX@yyyy.fr: NOM, Prénom$...
    2) lister les adresses dans une autre feuille en éliminant les doublons.

    J'ai réussi à faire quelque chose qui marche sur un cas particulier : 3ieme Macro ci-dessous : Sub ActeursSupplementaires()
    Par contre lorsque j'essaie de passer du cas particulier au cas général, à savoir ne pas étudier une chaine de texte mais toutes les cellules de la colonne F, la macro se "casse". Malgré mes efforts je n'arrive pas à résoudre le problème....

    L'erreur "5" tombe sur la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau(j) = Left(Tableau(j), InStr(Tableau(j), ":") - 1)
    . Et pas de problème sur la macro de cas particulier : Sub ActeursSupplementaires()

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    Sub Listingauteurs()
        Dim ColonneF As String
        Dim Tableau() As String
        Dim GAIA() As String
        Dim h, i, j, k, l, m, n As Integer
        Dim Doublon As Boolean
        Dim Auteurs As Range
     
        n = 1
        k = 0
     
        Worksheets("Base_IDEAS").Activate
        For h = 2 To 500
     
        ColonneF = Cells(h, 6).Value
     
        ReDim GAIA(k)
     
            Tableau = Split(ColonneF, "$")
     
        For j = 0 To UBound(Tableau)
     
            Tableau(j) = Left(Tableau(j), InStr(Tableau(j), ":") - 1)
     
        Next j
     
        'boucle sur le tableau pour visualiser le résultat
        For i = 0 To UBound(Tableau)
            'Debug.Print Tableau(i)
            GAIA(k) = Tableau(i)
            k = k + 1
            ReDim Preserve GAIA(k)
     
        Next i
     
        For k = 0 To UBound(GAIA)
            Debug.Print GAIA(k)
        Next k
     
        Next h
     
     Debug.Print ("passage à l'étape suppression de Doublons")
     
     
     
    Worksheets("ListeGAIA").Activate
    Range(Cells(1, 1), Cells(UBound(GAIA), 1)) = Application.Transpose(GAIA)
     
     Call GestionDoublons
     
     End Sub
     
     Sub GestionDoublons()
     
    Dim l As Integer
      l = 2
     
     Range("A2").Sort Range("A2"), xlAscending, Header:=xlNo
     While Cells(l, 1).Value <> ""
        If Cells(l, 1).Value = Cells(l - 1, 1).Value And Cells(l, 1).Value <> "" Then
            Cells(l, 1).Delete
            l = l - 1
     
        End If
     
        l = l + 1
    Wend
     
    End Sub
     
    Sub ActeursSupplementaires()
     
      Dim Tableau() As String
        Dim Auteurs As String
        Dim GAIA() As String
        Dim h, i, j, k, l, m, n As Integer
        Dim Doublon As Boolean
     
     
        k = 0
        n = 1
        ReDim GAIA(k)
     
     
     
     
            Tableau = Split("AF1065@grdf.fr: FAUCHER, Helene$OG1054@grdf.fr: HAGUE, Mickael$KY1042@grdf.fr: AUDEBERT, Francois$DQ1042@grdf.fr: DE LA SALLE, BENOIT", "$")
     
        For j = 0 To UBound(Tableau)
     
            Tableau(j) = Left(Tableau(j), InStr(Tableau(j), ":") - 1)
     
        Next j
     
        'boucle sur le tableau pour visualiser le résultat
        For i = 0 To UBound(Tableau)
            'Debug.Print Tableau(i)
            GAIA(k) = Tableau(i)
            k = k + 1
            ReDim Preserve GAIA(k)
     
        Next i
     
        For k = 0 To UBound(GAIA)
            Debug.Print GAIA(k)
        Next k
     
     Debug.Print ("passage à l'étape suppression de Doublons")
     
     
     
    Worksheets("ListeGAIA_Acteurs_supp").Activate
    Range(Cells(1, 1), Cells(UBound(GAIA), 1)) = Application.Transpose(GAIA)
     
     Call GestionDoublons
     
    End Sub
    Pouvez-vous me venir en aide ?

    Merci par avance pour votre contribution

    Pilsoner
    Fichiers attachés Fichiers attachés

  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
    ton erreur commence à cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim h, i, j, k, l, m, n As Integer
    où seul n est typé en integer, les autres variables l'étant en variant
    De plus : en typant en integer, il a la limite d'un Integer. Si tu dépasses ette limite, c'est le type long, qu'il te faut utiliser.

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut
    Bonjour un paria,

    Merci beaucoup pour ton retour !

    1) Pour être certain de ne pas faire d'erreur j'ai donc bien défini toutes les variables séparément.
    2) Merci pour ton retour sur le format de variable. Normalement la limite ne sera pas dépasser dans mon cas

    3) Le problème reste présent... Je me permets de douter que la définition des variables citées ci-dessus. En effet la troisième macro est bien fonctionnelle.

  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
    Je me permets de douter que la définition des variables citées ci-dessus. En effet la troisième macro est bien fonctionnelle.
    Tu parles ! le tableau qui y est traité (un array) ne contient, lui, que 4 éléments.
    Le problème reste présent...
    montre le code écrit (après les corrections). Et dis-nous combien vaut j lorsque tu reçois le message d'erreur.

    Je te fais par ailleurs observer que cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau(j) = Left(Tableau(j), InStr(Tableau(j), ":") - 1)
    ne peut que générer une erreur si tableau(j) ne contient pas ":" (bien évidemment).

  5. #5
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut
    1) Mes données d'entrées sont mal posées. Je m'en excuse. Je vais modifier le message de base

    2) Tu changes tout de suite de ton toi avec tes "Tu parles!", "bien évidemment" (lorsque la personne qui pose la question se présente en parlant en premier de son très bas niveau.
    --> Top ton ton convivial mais n'oublie pas de respecter un peu les gens fiston !

    3) Je regarde tout ça en rentrant chez moi et poste mes corrections et avancements


  6. #6
    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
    mais n'oublie pas de respecter un peu les gens fiston !
    désolé, mais il n'y avait aucun irrespect dans "tu parles!", qui veut dire également "pardi" en Français en fonction du contexte
    Mais je ne suis pas là pour m'exposer à la susceptibilité (surtout mal venue).
    Et je ne suis pas là non plus pour énoncer des règles de syntaxes à un débutant qui les met de surcroît en doute au seul fait que "ça marche pourtant ici ou là"..
    Le "fiston" pense que tu as non seulement du être père très très très jeune, mais que même ainsi du dois approcher les 100 ans. Félicitations.
    Je te souhaite bonne chance dans la réussite de ton projet.

  7. #7
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut
    Le respect est une notion très subjective car elle prend en compte le ton discours.

    "Pardi" = Expression qui exprime une "affirmation évidente"
    "Tu parles" = Expression qui exprime le scepticisme

    Je suis moi même très mauvais en français et te recommande donc ce site : https://www.projet-voltaire.fr/.
    Pour le sens des mots et expression je pense que tu as un dico ou google.

    Bonne soirée à toi et bonne continuation.

    Merci pour tes encouragements.

    PS : Navré pour ma susceptibilité malvenue
    PS 2 : Quand tu vois un message écrit par quelqu'un qui se revendique d'un niveau débutant tu as deux options :
    - Rentrer dans le sujet, tu expliques tes propositions. en prenant en compte que tu feras fasse à quelqu'un qui comprend très peu
    -Tu passes ton chemin et ne perds pas ton temps à torcher des messages minimalistes pour faire monter ton compteur "participation".

  8. #8
    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 !

    Je préviens : unparia est souvent bien plus gentil que moi …
    Nous partons tous deux du même principe : être débutant est en aucun cas une excuse
    afin d'obtenir une réponse toute cuite, faire réaliser son boulot, etc … en référence aux règles de ce forum !
    Nous préférons réveiller les neurones du demandeur surtout quand c'est justement d'un niveau débutant,
    ce n'est vraiment pas difficile de vérifier les variables pendant la progression de son code …


    Ceci dit, à la place de la ligne de code incriminée - même si la solution a pourtant déjà été mise en évidence ! -

    utiliser les fonctions VBA Split et UBound bien plus efficaces !

    Il suffit de s'entrainer à ce qu'elles renvoient selon chaque cas de figure, à la portée donc d'un débutant.
    Sans compter l'aide VBA interne, les exemples dans les discussions de ce forum
    et surtout le tutoriel des fonctions VBA manipulant le texte disponible sur ce forum …

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

  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
    Je suis moi même très mauvais en français et te recommande donc ce site
    Mes données d'entrées sont mal posées. Je m'en excuse.
    J'ai vraiment "adoré" ce rapprochement.
    C'est bien, de s'excuser soi même ...

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

Discussions similaires

  1. Effacer (cas particulier) d'un champ de formulaire
    Par frog43 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 17/05/2006, 19h29
  2. Réponses: 27
    Dernier message: 12/01/2006, 12h04
  3. cas particulier agaçant
    Par devdébuto dans le forum C
    Réponses: 17
    Dernier message: 14/12/2005, 00h45
  4. Enregistrement courant après refresh [cas particulier]
    Par say dans le forum Bases de données
    Réponses: 8
    Dernier message: 02/08/2005, 16h59

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