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 :

Contrôle des erreurs [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 19
    Par défaut Contrôle des erreurs
    Bonjour à tous.

    J'ai un petit problème à vous soumettre

    Contexte :

    Un gros tableau d'une quarantaine de colonne et qui à terme contiendra environ 9000 lignes.

    Le problème :

    J'aimerais que dans une colonne (on va dire la 41ème), je puisse voir le nom des colonnes vides, en sachant que parmi les 40 colonnes quelques une ne font pas partis du problème (elles sont facultative).

    Le petit dessin

    Nom : tableau.JPG
Affichages : 145
Taille : 18,4 Ko


    Sur la capture, je n'ai pas mis de colonne facultative, mais je vais avoir une colonne FAX qui ne devra pas être prise en compte dans le "résultat"
    D'avance merci pour votre aide.

    PS : C'est pour le boulot, sous Excel 2003

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,


    Avec une fonction NbVal. Par exemple : où vous ajoutez les groupes de cellules non facultatives.


    Cordialement.

  3. #3
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour le fil, bonjour le forum,

    Une autre proposition par VBA :
    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
    Sub Macro1()
    Dim O As Object 'déclare la variable O (Onglet)
    Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
    Dim DC As Byte 'déclare la variable DC (Dernière Colonne)
    Dim I As Integer 'déclare la variable I (Incrément)
    Dim J As Byte 'déclare la variable J (incrément)
    Dim Info As String 'déclare la variable Info
     
    Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)
    TC = O.Range("A1").CurrentRegion 'définit le tableau de cellules TC
    DC = UBound(TC, 2) 'définit la dernière colonne DC du tableau TC
    For I = 2 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes I du tableau TC (en partant de la seconde)
        For J = 1 To DC - 1 'boucle 2 : sur toutes les colonnes J du tableau TC (sauf la dernière)
            'si la valeur ligne I / colonne J du tableau TC est vide, définit la variable Info
            If TC(I, J) = "" Then Info = IIf(Info = "", TC(1, J), Info & ", " & TC(1, J))
        Next J 'prochaine colonne de la boucle 2
        O.Cells(I, DC).Value = Info 'place info dans la dernière colonne de la ligne I du tableau TC
    Next I 'prochaine ligne de la boucle 1
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 19
    Par défaut
    Bonjour.

    Merci pour vos réponses.

    Je ne sais pas trop adapté votre code.

    J'ai joint le tableau, j'ai enlevé tous le code VBA et les macros (formulaire de saisie et modification) pour que ce soit plus clair.


    Tableau Morgan Developpez.xls

    Encore merci.


    PS : je débute en VBA, je viens de recevoir le livre Excel et VBA 2010-2013 pour les nuls, pour vous dire le niveau

  5. #5
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour le fil, bonjour le forum,

    Ton fichier modifié en pièce jointe. J'ai rajouté un CommandButton et une colonne Infos manquantes à la fin...
    Fichiers attachés Fichiers attachés

  6. #6
    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
    Bonjour Thautheme, morgan, le forum
    J'ai testé ton code et remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TC(I, J) = "" Then Info = IIf(Info = "", TC(1, J), Info & ", " & TC(1, J))
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TC(I, J) = "" Then Info = IIf(Info = "", TC(3, J), Info & ", " & TC(3, J))
    sinon cela ne donnait rien.
    Autre souci, en pas à pas, tout se passe bien, j'ai testé en remplissant deux lignes, par contre comme je n'ai que deux lignes le code va chercher un max d'infos et fini par planter si je lance la macro en auto(c'est ce qui s'est passé sur mon poste).
    Il faudrait faire une boucle sur une colonne dont les données sont obligatoires, ou sont toujours renseignées.
    Morgan, y-a-t-il une colonne qui sera toujours renseignée à chaque saisi d'une nouvelle ligne?
    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

  7. #7
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour le fil, bonjour le forum,

    Merci Éric ! Tu as tout à fait raison je navet (dans ce cas on peut...) pas fais l'adaptation au tableau de Morgan. Heureusement que tu veilles au grain...
    Pour la seconde remarque, comme dans son fichier Range("A1").CurrentRegion prenait en compte tout le tableau j'ai laissé comme ça mais tu as, encore une fois, raison de signalé cette anomalie.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/04/2012, 12h57
  2. Zend Form contrôle des erreurs
    Par n1k00 dans le forum Zend Framework
    Réponses: 1
    Dernier message: 26/11/2009, 00h17
  3. Erreur du job 'Contrôle des agents de réplication'
    Par pasobo dans le forum Réplications
    Réponses: 0
    Dernier message: 23/06/2009, 11h25
  4. Codes de contrôle des imprimantes
    Par hetzel dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 21/03/2003, 17h17

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