Msgbox et comparaison de valeurs
Bonjour Vba New Matix le forum
VbaNew : bon il semble que ce sujet ne soit plus d'intérêt que pour nous
mais moi voilà comment je vois les choses ( j'ai édité et rajouté le message si tout est OK j'ai copié mr VbaNew:!)
amicalement
Papou
Sub traiter()
Dim i&, fin&, aa As Variant, mes$, mesdep$
mesdep = "Importations des données terminées" & vbCrLf & vbCrLf & _
"Des dépassements ont été Constatés"
With Feuil1
fin = .Range("A" & Rows.Count).End(xlUp).Row
aa = .Range("A4:I" & fin)
For i = 1 To UBound(aa)
If aa(i, 1) = "" Then aa(i, 1) = aa(i - 1, 1)
If aa(i, 3) = "" Then aa(i, 3) = aa(i - 1, 3)
Next i
For i = 1 To UBound(aa)
If aa(i, 3) = "Sans limite" Then GoTo 1
If aa(i, 7) > aa(i, 3) Then mes = mes & vbCrLf & "-" & aa(i, 1) & " " & aa(i, 7) & " mesuré dépasse " & aa(i, 3)
1 Next i
End With
If mes = "" Then
MsgBox "Importations des données terminées" & vbCrLf & vbCrLf & _
"Aucun dépassement n'a été Constaté",,"Aucun Défaut"
Else
MsgBox mesdep & mes, , "Liste des Défauts Matix"
End If
End Sub
Bonjour à tous les deux,
Non non, rassurez-vous, je n'abandonne pas le sujet !
J'ai essayé vos codes respectifs en essayant de comprendre ce que vous avez fait sur mon classeur, ça me paraît très bien, merci beaucoup !
Au passage, petite remarque, j'ai tendance à ne pas toujours saisir ce que fait la fonction UBound; si j'ai bien saisi, elle devrait normalement retourner le dernier indice d'un tableau, et parfois, ça n'est pas le cas dirait-on..
J'en profite pour anticiper un peu sur ce que j'aimerais faire pour compléter ceci si vous permettez. J'entends déjà presque paritec me disant de le faire sur une feuille excel jointe, mais là je ne vois pas trop comment faire mis à part des explications "brutes" ici même.
Je souhaiterais, dans la mesure du possible, avant d’afficher la msgbox dans laquelle on peut voir les résultats de l’analyse comme jusqu’à présent, afficher une première fenêtre permettant à l’utilisateur (dans le cas où des dépassements sont constatés bien-sûr) de sélectionner la feuille dans laquelle se trouvent les dépassements (chaque feuille correspondant à une catégorie de données précise). Une fois la feuille sélectionnée par l’utilisateur, on aurait alors une seconde fenêtre affichant uniquement les dépassements de la feuille en question. Il faudrait également être en mesure de pouvoir naviguer entre ces deux fenêtres (retour). Voilà… Après quelques recherches, je pense qu’il faudrait utiliser une userform type combobox, mais je ne suis pas parvenu à grand chose, pour ne pas dire rien..
Bonjour à tous,
C'est ça normalement. Pour savoir ce que signifie cette fonction, place-toi sur le mot et appuie sur F1. De la même manière, l'aide VBA regorge d'informations très utiles.m@tix a écrit :Au passage, petite remarque, j'ai tendance à ne pas toujours saisir ce que fait la fonction UBound; si j'ai bien saisi, elle devrait normalement retourner le dernier indice d'un tableau
Dans quel cas ? Ça peut être problématique vu qu'on utilise cette fonction pour le traitement de tes données.m@tix a écrit :et parfois, ça n'est pas le cas dirait-on...Sûrement à cause de la bizarrerie de mes données.
Sinon pour ton souci, regarde dans le fichier. Je t'ai mis une ListBox et un TextBox. Bon c'est possible aussi avec une ComboBox mais j'avais envie de tester une ListBox
Merci ! Pas mal de juxtaposer ces deux userforms au final !
Cependant, même après avoir regardé de près ton code, j’ai vraiment du mal à l’adapter à mon classeur. En fait, le code que j’ai jusqu’à présent (sans encore parler de txtbox et autres) fait se présente sous cette forme (je ne fournis pas le classeur, les données sont persos) :
Dans un module :
Sub analyse()
‘analyse feuille 1
Code adapté[…]
‘analyse feuille2
Code adapté[…]
‘analyse feuille..
…
‘synthèse
‘si le message est nul alors :
msgbox « aucun dépassement »
‘sinon
msgbox mesdep & mes
End subRe,
Les données des différentes feuilles sont différentes à ce point ?
Avec seulement ce que tu me fournis comme informations, ça va être difficile pour moi de t'aider.
Au pire, peux-tu me montrer à quel point les données sont différentes ? Mets des données bidons si besoin.
Vu que je galère vraiment, je peux essayer de te fournir le module où j'ai écrit le code pour le traitement des données. Ce serait suffisant ? Fais le moi savoir stp, je te joins le fichier au prochain message dans ce cas.
Au passage, question purement esthétique: vu qu'on utiliserait plus de msgbox, peut-on aussi retrouver le petit dessin avec la crois rouge (obtenue via vbCritical je crois) en cas de dépassement ? Aussi, il serait bien en cas de non dépassement, de ne pas afficher cette userform, mais plutôt une msgbox classique indiquant qu'aucune erreur a eu lieu. Dans la mesure du possible bien-sûr.
Merci pour le temps que tu m'accordes !
(et oui, les données sont vraiment "différentes", dans le sens où les infos à récupérer ne sont jamais dans les mêmes cellules..)
Ça serait peut-être suffisant mais ça serait trop galère pour moi. Mais bon, envoie quand même on sait jamais...m@tix a écrit :Vu que je galère vraiment, je peux essayer de te fournir le module où j'ai écrit le code pour le traitement des données. Ce serait suffisant ?
Je ne sais pas.m@tix a écrit :peut-on aussi retrouver le petit dessin avec la crois rouge (obtenue via vbCritical je crois) en cas de dépassement ?
Ça c'est possible, mais vu qu'il se peut que tu n'utilises pas mon code à cause de la disparité de tes données, je vais attendre un peu et voir l'avancement de ce post, histoire de ne pas faire ça pour rien.m@tix a écrit :Aussi, il serait bien en cas de non dépassement, de ne pas afficher cette userform, mais plutôt une msgbox classique indiquant qu'aucune erreur a eu lieu. Dans la mesure du possible bien-sûr.
Ok. Voici ci-joint le module en question (à renommer en .bas pour l'importer dans Excel). Si jamais c'est trop délicat avec "seulement" ceci, ou trop embêtant, n'hésite surtout pas à le dire, j'essaierai de fournir autre chose.
Avant que tu n'ouvres le fichier, je te préviens qu'il s'agit de la version avec mon code, car j'ai pour le moment du mal à adapter la vôtre (toi et paritec). Alors, je me doute que j'ai dû me compliquer la tâche (je sais notamment qu'il y a des boucles inutiles, allant de i=15 à 15 par exemple
Edit: suppression du module
Re m@tix,
Honnêtement, j'ai même pas envie de lirem@tix a écrit :Si jamais c'est trop délicat avec "seulement" ceci, ou trop embêtant, n'hésite surtout pas à le dire
j'aimerais bien ! Juste 2 ou 3 feuilles dont la structure est relativement différente c'est pas possible ? En mettant des fausses donnéesm@tix a écrit :j'essaierai de fournir autre chose.
Ok, je t'envoie ça dans la demi-heure max
Bon j'ai quand même jeté un coup d’œil à ton code
Léger retard sur l'horaire annoncé, dsl...
Voici donc une partie du classeur, comprenant les 4 premières feuilles de données. Je m'excuse d'avance, mais je n'ai laissé que les données que j'ai estimé "publiables" sur un forum. Enfin, l'essentiel y est à priori. J'ai donc pour l'occasion allégé le code en sortant toutes les parties sur les feuilles que je n'ai pas incluses.
Pour le coup des procédures séparées... pas bête du tout. Je débute...
Quelques questions :
1- Toutes les feuilles ne possèdent pas les même intitulés ?
2- Il n'y a pas de colonnes "Numéro de mesure" ? Comme dans un des premiers fichiers que tu as joint.
3- Dans la "feuil5" les cellules fusionnées en F4,G4,H4 c'est normal ? Alors que sur la ligne 41 de la même feuille la colonne F n'est pas fusionnée aux colonnes G et H. Dans ce cas, que trouve-t-on en F5 --> F20 ? Des mesures ou pas ?
Voilà tout pour l'instant.
Les réponses:
1- En effet, chaque feuille a un nom particulier, du genre, "Eléments de type A", "Eléments de type B", etc..
2- Si, je l'ai juste renommé différemment, à savoir "type de mesure". Dans le fichier original, le nom est plus explicite, mais j'ai préféré changer là encore..
3- En effet c'est un oubli, autant pour moi. Il faut considérer la chose comme sur la ligne 41. De F5 à F20, ne t'en préoccupe pas, il s'agit uniquement de texte.
En fait sur le fichier "original", les cellules F4,G4,H4 étaient en fait bien fusionnées entre elles, c'est moi qui les ai défusionnées pour rendre le tableau plus compréhensible.
Remarque: il est possible qu'il y ait eu un décalage dans les lignes quand j'ai modifié le fichier en supprimant les données. Notamment, cela peut jouer sur les départs et fins des indices que j'ai mis en place dans les boucles For.
Bopnjour les VbaNew et Matix, le forum
bon alors j'ai raté quoi, car si j'ai bien compris on est loin du sujet initial???
a vous relire
a+
papou
Non on est pas si loin que ça !
Résumé de l'épisode précédent :
1- m@tix --> galère --> explications claires
2- papou --> lassé --> de demander explications claires
3- vba-new --> fournit explications plus claires
4- vba-new et papou --> code pour répondre à problématique initiale
5- m@tix --> code pas (ou difficilement) adaptable à toutes les feuilles du classeur
6- vba-new --> galère --> trouver code universel
Salut le forum
Arrêter de chercher
M@trix a écrit :C'est parfait, tout fonctionne bien, un grand merci à vous deux ! En plus, j'ai appris des choses.
Mytå
Bonsoir Mytå,
Et oui, je suis aussi sur un autre forum, je ne m'en cache pas ! Après tout, j'aime bien avoir des avis venant de plusieurs personnes, c'est très instructif.
De là à inciter les membres de ce forum qui ont déjà essayé pas mal de choses sur le sujet à tout stopper...
Et puis la citation que tu mets ne correspond plus au problème actuel, qui n'est pas résolu.
Re le forum
Mettez vous à la place d'une personne qui va essayer de vous venir en aide. S'il commence à vous donner une indication et remarque que vous repostez tel quel votre message initial à un autre endroit, il aura vraiment eu l'impression (à juste raison) de perdre son temps.
C'est la moindre des choses de préciser que la demande a été faite sur un autre forum.
Mytå
Bonjour VbaNew
Bon alors toi VbaNew je t'apprécie a un point que tu n'imagines même pas, ta manière de faire des synthèses est un bonheur, j'ai pas encore compris pourquoi nos codes ne sont pas compatibles avec ses autres feuilles mais bon si il nous fournissait un vrai classeur, je pense que nous saurions lui pondre le code qui va bien mais bon Matix il est un peu difficile à faire bouger à se demander si c'est pour lui que l'on se casse la tête ou pour nous?
Myta je suis 100% d'accord avec ta remarque pas sur le fait qu'il aille ailleurs, non on fait pareil, mais au moins qu'il signale le multipostage par correction.
Bon allez je vais regarder plus haut si un fichier de Matix et suffisamment clair pour regarder pourquoi nos codes ne marchent pas
a+
papou