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 :

Report d'info dans un second tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 6
    Par défaut Report d'info dans un second tableau
    Bonsoir à tous,

    J'ai besoin de vous.
    Je suis en train de fignoler une application de planification sous VBA mais un élément m'échappe. Avec un premier Userform je peux créer un nouvel onglet pour chaque jour de la semaine. Dans chaque page, j'ai deux tableaux, un premier dont la taille change en fonction du nombre d'employés présents et le second qui fait office de résumé "qui fait quoi et quand".
    J'ai donc ajouté une macro permettant de remplir ce second tableau automatiquement mais "#NOM?" apparaît dans toutes les cases ...

    Tout est expliqué dans l'exemple ci joint et voici ma formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ' Données
     
    select1 = Range("C5:C" & CDbl(Range("A4")) + 5)
    select2 = Range("B5:B" & CDbl(Range("A4")) + 5)
     
    a = CDbl(Range("A4")) 'nombre d'employés
    b = a + 11 ' Ligne FSC 1
    c = b + 3 ' Ligne FSC 4
    d = Cells(b, 2) ' Case FSC 1
     
    Range(Cells(b, 3), Cells(c, 17)).FormulaLocal = "=SI(ESTNA(EQUIV(d;select1;0));"""";INDEX(select2; EQUIV(d;select1;0)))"
    Range(Cells(b, 3), Cells(c, 17)) = Range(Cells(b, 3), Cells(c, 17)).Value
    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Il y avait plusieurs problème dans ton code

    La formule n'affiche rien (pas analysé ce qu'elle devrait retourner), mais au moins plus d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim select1 As Range
    Dim select2 As Range
     
    Set select1 = Range("C5:C" & CDbl(Range("A4")) + 5)
    Set select2 = Range("B5:B" & CDbl(Range("A4")) + 5)
     
    a = CDbl(Range("A4")) 'nombre de CM
    b = a + 11 ' Ligne FSC 1
    c = b + 3 ' Ligne FSC 4
    d = Cells(b, 2) ' Case FSC 1
     
    Range("C" & b & ":Q" & c).FormulaLocal = "=SI(ESTNA(EQUIV(" & d & ";" & select1.Address & ";0));"""";INDEX(" & select2.Address & ";EQUIV(" & d & ";" & select1.Address & ";0)))"

  3. #3
    Membre chevronné Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 352
    Par défaut
    Bonsoir Anthonyh2,

    Je rejoins Jérôme : je pense que tu perdrais moins de temps à refaire un code propre que de vouloir essayer de corriger celui que tu nous as présenté. Excuses ma franchise.

    Mon avis sur la question :

    VBA n'est pas nécessaire pour ce travail. Excel peut suffire sans macro.
    Colles la formule suivante dans la cellule jaune de ton exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(NB.SI(G6:G13;B22)>0;INDEX(B6:B13;EQUIV(B22;G6:G13;0);1);"")
    Est-ce que cela te convient ?

    Si par contre, tu expérimentes VBA ou si cela fait parti d'un exercice scolaire, je pense que l'on peut faire l'équivalent en VBA. Mais ça sera plus dur.

    Bertrand

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 6
    Par défaut
    En effet cela marche mais mon problème est qu'il faut que je l'adapte à toutes les cellules du second tableau tout en sachant qu'elle peuvent être décalées vers le bas si le tableau du haut est agrandi. Le tout en cliquant sur un bouton.

  5. #5
    Membre chevronné Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 352
    Par défaut
    Re,

    Il te faut figer tes plages ou les désigner par des noms.
    Quand on a l'habitude, c'est rapide à faire

    Regardes en PJ si c'est cela que tu veux.

    Si tu "agrandis" ton tableau, il suffit de modifier les plages désignées par des noms... les formules du second tableau resteront opérationnelles. tu veux que je crée des noms de plages ?

    Bertrand
    Fichiers attachés Fichiers attachés

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 6
    Par défaut
    C'est exactement ça ! Merci

    Maintenant il faudrait que je puisse l'insérer dans la macro qui génère ma feuille ...

    Comment pourrais-je ajouter cela dans une macro qui crée ma feuille et mes tableaux en fonction d'un chiffre entré (celui du nombre de lignes du premier tableau) ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 6
    Par défaut
    Citation Envoyé par Bear the french Voir le message
    Re,

    Il te faut figer tes plages ou les désigner par des noms.
    Quand on a l'habitude, c'est rapide à faire

    Regardes en PJ si c'est cela que tu veux.

    Si tu "agrandis" ton tableau, il suffit de modifier les plages désignées par des noms... les formules du second tableau resteront opérationnelles. tu veux que je crée des noms de plages ?

    Bertrand
    Désolé, je n'avais pas vu ta question mais j'aimerais bien que tu me montres

Discussions similaires

  1. report de données dans tableau excel
    Par ericaa dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/04/2015, 08h37
  2. [WD-2010] Report de somme dans un tableau à lignes variables
    Par boblastar69 dans le forum Word
    Réponses: 3
    Dernier message: 01/02/2012, 16h43
  3. Effacer infos dans un Tableau (Array) - Tetris
    Par Ivady dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 23/07/2009, 14h59
  4. Report de solde dans un tableau
    Par biboulou dans le forum Excel
    Réponses: 2
    Dernier message: 12/07/2008, 08h56
  5. Réponses: 1
    Dernier message: 04/05/2007, 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