Extraction de donné - VBA ou INDEX/EQUIV?

Quelle erreur j'avais fait sur le lancement de l'userform?

Je ne sais pas : j’ai repris à ma manière.

si je rempli 5 en J, dans le tableau ca va pas dans la case.

Quel ‘’J’’ ? Quel tableau ? Quelle case ?

Moi, ce que j’ai fait, c’est faire aller les données saisies dans les TextBox et ComboBox dans les colonnes dont le numéro figure sur l’userform du fichier joint à ton message de 13h29.

Il ne m’a pas échappé que le résultat est curieux….

Mais tu peux toujours modifier : la valeur de la propriété ‘’Tag’’ de chaque TextBox et ComboBox est celle du numéro de la colonne où doit s’écrire la valeur du contrôle.

La premiere colonne est un numérotage automatique...

Voilà qui est nouveau : c’est dans cette première colonne que va la donnée du TexBox1

chaque fois qu'on veut creer une nouvelle saisie dans l'userform, cela va a la dernier ligne ecrite, va a la suite

La macro se sert de la colonne i , censée ne jamais être vide, pour repérer la ligne où écrire les données saisies dans l’userform. Or, cette colonne, dans l’état actuel reste vide…Les données s'écrivent donc toujours à la même ligne.

j'aimerais changer le message

Mais tu ne dis pas lequel ?

mais surtout que l'userbox se ferme.

Il te suffit de supprimer l’instruction ‘’ SemieAutom.Show ’’ à la fin du code lié au bouton ‘’Valider’’

    For i = 5 To derLigne
        If fp.Cells(i, 9) <> fp.Cells(i + 1, 9) Then
            With fp.Range("A" & i & ":" & "U" & i).Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .Weight = xlThick
            End With
        Else
            fp.Range("A" & i & ":" & "U" & i).Borders(xlEdgeBottom).LineStyle = xlThin
        End If
    Next i
    MsgBox "Les données ont été prises en compte."
    Unload Me
    SemieAutom.Show 'à supprimer pour fermer l'userform
End Sub

Bye !

Hello,

Merci pour ce retour :

Il reste 3 problèmes:

-> Le formulaire écrit toujours sur la même ligne, meme si la date est renseignée et la colonne I remplie du coup.

Ce qu'il faudrait : Quand l'userform se lance, il faudrait qu'il prenne la derniere ligne écrite, se positionne en A, rajoute +1 à la valeur precedente et donc saisisse les données sur cette ligne.

-> Les champs du userform doivent aller remplir les champs de colonnes portant le même nom en fait. J'ai fait une petite erreur en t''envoyant le fichier

-> le message que je voudrais changer est le message s'affichant après avoir cliqué sur validé

Merci!

excel

Une idée me vient à l'esprit

-> Est-il possible de faire que le classement des données dans le talbeau soit croissant en fonction des dates?

Si on est en juin et que quelqu'un à oublié de renseigner une com, et qu'il la date au 03 mars, elle va s'inserer après celles d'avril

est il possible de faire ca?

Bonjour

Il y a un problème. Tu écris :

Les champs du userform doivent aller remplir les champs de colonnes portant le même nom

Or le nom des champs de l’userform ne correspondent pas aux noms que l’on retrouve sur le tableau de ta feuille ‘’PlanComm’’.

Pire, il y a moins de contrôles dans l'userform que de colonnes sur la feuille, ce qui veut dire que ton tableau ne sera jamais complètement rempli après validation de ta boite de dialogue.

Il faudrait donc :

1 – que tu supprimes des colonnes des colonnes dans le tableau de la feuille ‘’PlanComm’’ ou que tu ajoutes des contrôles dans l’Userform pour qu’il y ait correspondance entre les deux….

2 – que tu complètes le deuxième tableau du fichier ci-joint pour savoir dans quelle colonne du tableau de la feuille ‘’PlanComm’’ je dois envoyer les valeurs des contrôles…

Ok ?

Bye !

12classeur1.xlsx (17.37 Ko)

Pire, il y a moins de contrôles dans l'userform que de colonnes sur la feuille, ce qui veut dire que ton tableau ne sera jamais complètement rempli après validation de ta boite de dialogue.

Ca c'est logique puisque les colonnes de variation sont des formules automatiques, donc tu en enleve 2 du comptage. La colonne 1 est a incrémentation automatique. Et la colonne trimester I est automatique aussi. 21 colonnes -4 pour 17 champs à remplir.

Ci-joint le tableau.

Rajout des remarques précédentes :

Possible d'aller écrire dans la prochaine ligne du tableau en rajoutant 1 au précedent #ID SUJET ?

Posible de créer une sorte de tri automatique par date? Je pensais qu'apres pour damer le problème des ID sujet qui seront donc pas dans l'ordre si les COM sont saisies plus tard, de faire un if Cell A2+1 <> A3 then A3 value A2+1, else on fait rien et boucle.

changer le message d'apres validation comme screen ci-dessus

Merci

10classeur1-1.xlsx (11.77 Ko)

Nouvelle version.

Bye !

Hello,

Merci pour le fichier,

encore un petit soucis sur un ligne quand j'ai cliqué sur validé, les données sont reversée mais j'ai un

incompatibilite de type

sur cette ligne :

Next c
    fp.Range("U" & ln) = fp.Range("U" & ln) * 1 'pour avoir un format de date'

Pourrais-tu me faire une copie d'écran de l'Userform, juste avant de valider afin que je puisse reproduire le bug et le corriger ?

Merci.

En soit ca ne change rien, c'est juste de devoir cliquer sur fin..

Ca le fait a chaque fois que l'userform est rempli à fond

usfor

Pour ce qui est des valeurs dans les déroulants, j'ai juste changé la feuilles de données et le bug se produit dès la premiere utilisation de ton fichier!

A part ca, tout est bon, il me reste une derniere étape dans mon fichier :

Generer le graphique

J'ai une ébauche sur le fichier que j'ai remis, et l'user form est créee et début de code, mais je ne sais pas comment rédiger ca.

En gros : Sur la feuille PowerPoint, j'ai un bouton. Ce bouton ouvre un userform. Cet userform demande la contrepartie et le Trimestre souhaité

Maintenant en fonction de la réponse, je voudrais generer le graph des communications de la feuille promoteur ou distributeurs (selon le choix) qui prend seulement les données relatives au trimestre choisi (qui correspond à la colonne I).

Graph de type :

 ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xl3DColumnClustered
    [code]ActiveSheet.Shapes("Graphique 1").IncrementLeft -354
    ActiveSheet.Shapes("Graphique 1").IncrementTop 143.25
    ActiveSheet.Shapes("Graphique 1").ScaleWidth 0.6645833333, msoFalse, _
        msoScaleFromTopLeft
    ActiveSheet.Shapes("Graphique 1").ScaleHeight 1.0156248177, msoFalse, _
        msoScaleFromBottomRight
    ActiveWindow.SmallScroll Down:=9

-> en gros je veux juste le mettre au milieu de la feuille excel

[/code]

Les données en colonnes P R et T par groupe de colonne. Pour la légende, la serie 1 doit porter le nom de la colonne P.

Merci d'avance, je ne sais pas si tu t'y connais sur les graph mais deja sur l'userform l'aide serait grandement utile!

Nouvel essai.

Bye !

Parfait, il ne manque que le message une fois que l'user a fini de saisir, mais je vais le mettre !

Enorme !!

Il me manque une derniere étape : A part ca, tout est bon

Generer le graphique

J'ai une ébauche sur le fichier que j'ai remis, et l'user form est créee et début de code, mais je ne sais pas comment rédiger ca.

En gros : Sur la feuille PowerPoint, j'ai un bouton. Ce bouton ouvre un userform. Cet userform demande la contrepartie et le Trimestre souhaité

Maintenant en fonction de la réponse, je voudrais generer le graph des communications de la feuille promoteur ou distributeurs (selon le choix) qui prend seulement les données relatives au trimestre choisi (qui correspond à la colonne I).

Graph de type :

 ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xl3DColumnClustered
    [code]ActiveSheet.Shapes("Graphique 1").IncrementLeft -354
    ActiveSheet.Shapes("Graphique 1").IncrementTop 143.25
    ActiveSheet.Shapes("Graphique 1").ScaleWidth 0.6645833333, msoFalse, _
        msoScaleFromTopLeft
    ActiveSheet.Shapes("Graphique 1").ScaleHeight 1.0156248177, msoFalse, _
        msoScaleFromBottomRight
    ActiveWindow.SmallScroll Down:=9

-> en gros je veux juste le mettre au milieu de la feuille excel

[/code]

Les données en colonnes P R et T par groupe de colonne. Pour la légende, la serie 1 doit porter le nom de la colonne P.

Tu aurais une idée?


Et j'ai une question : pourquoi quand j'ai aucune ligne, que je lance le formulaire, il commence à compter à partir de 3 sur le #sujet?

Pour le graphique, je te propose de faire, à la main, sur la feuille PowerPoint le graphique que tu souhaites en indiquant les choix que tu auras faits dans l'userform.

Je pense en effet que le plus simple serait de créer, une fois pour toutes le graphique, et de le mettre à jour avec les données choisies dans l'userform.

Bye !

J'ai fait mon petit exemple sur le fichier ci-dessous, tu trouveras toutes les informations

Encore merci !!

Neophite77 a écrit :

Et j'ai une question : pourquoi quand j'ai aucune ligne, que je lance le formulaire, il commence à compter à partir de 3 sur le #sujet?

Si le tableau est vide et ne contient que les titres de la ligne 4 le numéro des données sera 1 , écrit en A5

Je ne vois pas comment il pourrait commence à ligne 3 ...

Bye !

C'était un bug au final j'ai résolu le probleme et rajouté un message de fin de saisie !

Je me decarcasse pour finir les graphiques la, mais je bloque

Nouvelle version.

Bye !

Hello

Merci, mais je clique sur le bouton, je choisi, et directement en erreur :

executiongraph

C’est curieux, je n’ai pas le bug que tu me décris mais, je m’aperçois que ça ne donne pas pour autant le bon résultat.

Dans l’exemple que tu m’a donné et qui me sert de référence, sur la v30, si on clique sur le premier histogramme (bleu) du graphique de gauche, on a dans la barre de formule :

=SERIE(Promoteurs!$P$4;Promoteurs!$A$6:$B$8;Promoteurs!$P$6:$P$8;1)

Et si on clique sur le premier hitogramme du graphique de droite on a :

=SERIE(Distributeurs!$P$4;PlanComm!$B$5:$B$14;Distributeurs!$P$7:$P$10;1)

Est-ce normal que dans la même formule on se réfère à deux feuilles différentes," Distributeurs" et "PlanComm" dans un cas et pas dans l’autre ?

Sur ce, à demain !

Bye !

C'est une erreur de ma part, pour les graph promoteurs, il faut aller chercher ttes les données dans promoteurs, pareil pour les distributeurs

La feuille PlanComm n'a aucune utilité pour cette macro!

Je ne peux pas lancer ta macro j'ai tjrs ce bug

Rechercher des sujets similaires à "extraction donne vba index equiv"