Contruction d'un tableau par macro

Bonjour,

Je n'arrive toujours pas à faire de tableau et c'est frustrant.

Pouvez vous m'expliquez comment créer le tableau B à partir du tableau A en cliquant sur la flèche résultat par exemple.

J'ai pris un exemple "simple" pour comprendre le principe parce que la je m'embrouille.

Tableau A

Les longueurs de colonnes sont variables.

Je souhaite que chaque date soit unique et pouvoir compter le nombre d'éléments des 3 traitements (A commander, en attente, en commande).

15fred35-tableau.xls (17.00 Ko)

EDIT : je ne veux pas de TCD, ça je sais faire

j'ai commencé comme ceci

Sub TableauB()
    Dim derniere_ligne As Integer

    'Suppression du contenu du tableau B
    Range("B2:K" & .Range("A" & Rows.Count).End(xlUp).Row).ClearContents

    'Dernière ligne du tableau A
    derniere_ligne = Range("A1").End(xlDown).Row

    'Enregistrement de la base de données dans un tableau
    Dim Tablo()
    ...
End Sub

Bonjour

Fred35 a écrit :

c'est frustrant

Sois patient Paris ne s'est pas ......

A voir

Je ne suis pas passé par un tableau mais j'ai traité ce cas d'une autre manière

Effectivement ça fonctionne très bien

  ' Construction d'une liste unique de date
  ' Les dates ont toujours posées problèmes, alors je les récupére au format nombre
  Set Mondico = CreateObject("Scripting.dictionary")
  For J = 3 To Nblg
    Mondico(CSng(Range("A" & J).Value)) = ""
  Next J

Alors là je n'ai rien compris

    ' On applique la formule qui va bien
    .Formula = "=SUMPRODUCT(N($A$3:$A$" & Nblg & "=$M3)*($E$3:$E$" & Nblg & "=N$2))"

C'est obligé la formule sommeprod ?, il n'existe rien de plus rapide ? J'ai peur que sur un nombre de lignes conséquent ça ralentissent grandement la macro.


La date en cellule M4 dans ton tableau ne sert à rien puisque qu'aucun des traitements ne correspond, comment ne pas la faire apparaître dans ce cas ?

J'avais trouvé une technique en construisant un tcd puis par champs dynamique je copiait les valeurs mais dès qu'il y a de nouveau codes ça ne fonctionne plus

Bonsoir

Je t'avais zappé

Une version qui supprime les lignes vides

Fred35 a écrit :

J'ai peur que sur un nombre de lignes conséquent

C'est combien conséquent ?

Banzai64 a écrit :

Je t'avais zappé

Ouais, bah la je suis véxé On peut pas être partout ou penser à tout ^^

C'est déjà bien de filer un coup de main.

La nouvelle version fonctionne comme je voulais.

Je vais essayer de reconstruire tout ça en modifiant le tableau pour voir si j'arrive à le reconstruire parce que ce matin j'ai essayé et j'me suis tout planté. Exercice, exercice :p

Alors juste pour info, je viens de réussir à adapter ta solution à un tableau un peu plus complexe et je suis très content

J'ai encore 2 questions :

Dans cette partie : .Replace what:=0, replacement:="", lookat:=xlWhole

à quoi sert lookat:=xlWhole ?

et dans cette partie :

  Set Mondico = CreateObject("Scripting.dictionary") 'pas compris
  For J = 3 To Nblg
    Mondico(CSng(Sheets("GPA Collecte").Range("A" & J).Value)) = "" ' CSng à quoi sa sert ?
  Next J

Bonjour

 .Replace what:=0, replacement:="", lookat:=xlWhole

xlWhole : c'est l'option "Totalité du contenu de la cellule" quand tu fais un Rechercher et Remplacer (Ctrl + h)

A1 = 0

B1 = 10

Avec le paramètre lookat:=xlWhole il n'y aura que la cellule A1 qui sera modifiée

Avec le paramètre lookat:=xlPart les 2 cellules seront modifiées

N'hésites pas à faire des essais

Set Mondico = CreateObject("Scripting.dictionary") 'pas compris

Création d'un objet (un tableau) qui à la particularité de ne contenir que des entrées uniques

Fred35 a écrit :

CSng à quoi sa sert ?

Transforme la date en nombre

A la place de récupérer la date sous format Date, on récupère la date sous format nombre (Single (voir l'aide sur CSng))

Merci beaucoup pour les explications et pour le temps que je t'ai emprunté.

Je continue de plancher sur le sujet, mais je peux clôturer ce post

Dans mon exercice, je rencontre une nouvelle difficulté

J'ai déplacé le tableau A dans Feuil2 et je n'arrive pas à adapté cette portion de code

  ' On copie la liste unique et on formate la colonne en date
  With Range("M3").Resize(Mondico.Count, 1)
    .Value = Application.Transpose(Mondico.keys)
    .NumberFormat = "m/d/yyyy"
  End With

J'avais pensé l'écrire

  ' On copie la liste unique et on formate la colonne en date
  With sheets("Feuil2").Range("M3").Resize(Mondico.Count, 1)
    .Value = Application.Transpose(Mondico.keys)
    .NumberFormat = "m/d/yyyy"
  End With

mais à priori j'ai une erreur au niveau de .NumberFormat = "m/d/yyyy"

Comment je peux faire ?

A moins que dès le début de la macro je mets un with sheets("Feuil2") ?


Le message d'erreur

Erreur d'exécution '1004':

Impossible de définir la propriété NumberFormat de la classe Range

Bonjour

A voir

Attention aux .

La ça fonctionne, mais si je mets le bouton sur feuille 2 ou n'importe quelle autre feuille, ça ne marche plus.

il bloque ici

    ' On copie la liste unique et on formate la colonne en date
    With .Range("M3").Resize(Mondico.Count, 1)

Pourtant on est bien dans la feuil2 là...

Il y a un truc qui m'échappe mais je vois pas quoi...

J'suis désolé, je triture un peu dans tous les sens mais je cherche à comprendre...


J'crois que je vais aller me coucher, je vois plus rien au code, j'vais revoir tout ça à tête reposé.

Bonne soirée et merci pour tout

J'ai bien fait attention au . cette fois ci mais c'est pareil

Même en mettant au début un sheets("Feuil1").select Dès que le bouton n'est plus sur la feuille ça ne fonctionne plus...

Bonjour

En mettant le bouton sur une autre feuille, il faut que toutes les références à cette feuille soient précédées par le nom de la feuille

Pas besoin de sélectionner la page

A tester

Merci Banzai, je pense avoir compris mes erreurs.

Après avoir étudié ta solution, j'ai tenté de refaire sur un de mes tableaux d'exercices.

Après plusieurs tentatives, j'y suis enfin parvenu, et les fautes que je commettais sont des fautes "bête".

Les with mal placé, l'oubli de ".", genre faute d'innatention...

Je pense avoir compris le principe, de là à le maîtriser, je pense qu'il va falloir en faire beaucoup d'autres

Merci du temps consacré

Rechercher des sujets similaires à "contruction tableau macro"