Vba test sur une valeur numérique
Résolu/Fermé
A voir également:
- Vba test sur une valeur numérique
- Test performance pc - Guide
- Pavé numérique bloqué - Guide
- Test composant pc - Guide
- Redmi note 13 5g test - Accueil - Téléphones
- Test performance pc gratuit - Accueil - Utilitaires
34 réponses
jib92
Messages postés
19
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
25 septembre 2008
1
12 sept. 2008 à 11:55
12 sept. 2008 à 11:55
ah d'accord, j'essayais déseperement d'afficher ce message...
Oui c'est bien ce que je veux. Afficher les lignes contenant le mot clef pour le km et pour la durée. Et si on ne met rien dans mot clef, peut on afficher toutes les lignes correpondant au km et à la durée (comme un tri excel)?
Et pourquoi ca n'affiche pas toutes les lignes? J'ai fait un tri sur l'annexe à 60000 donc 1 an avec un ctrl+find "fixation" et je trouve 4 lignes. Le programme ne m'en trouve que 2. un au singulier et un au pluriel...
C'est pas parfait comme boulot !!!
Non je déconne, tu es comme la messie pour moi...
Oui c'est bien ce que je veux. Afficher les lignes contenant le mot clef pour le km et pour la durée. Et si on ne met rien dans mot clef, peut on afficher toutes les lignes correpondant au km et à la durée (comme un tri excel)?
Et pourquoi ca n'affiche pas toutes les lignes? J'ai fait un tri sur l'annexe à 60000 donc 1 an avec un ctrl+find "fixation" et je trouve 4 lignes. Le programme ne m'en trouve que 2. un au singulier et un au pluriel...
C'est pas parfait comme boulot !!!
Non je déconne, tu es comme la messie pour moi...
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
12 sept. 2008 à 12:19
12 sept. 2008 à 12:19
Ok je viens de voir le pourquoi du comment ...
En fait pour pouvoir parcourir le tableau, il faut se baser sur une colonne qui ne contient pas de cellules vides entre la première ligne et la dernière ligne à tester. Le soucis dans ton tableau c'est que tu as fusionné plusieurs lignes dans la colonne A ... et idem pour d'autres colonnes.
Pour qu'une feuille Excel ou un tableau Excel puisse être utilisé comme une base de données, il ne faut pas avoir de cellules fusionnées ...
Il existe certainement un moyen, mais je ne connais pas assez Excel et ses fonctions internes pour faire mieux que je n'ai fait.
Je vais regarder si je peux contourner le problème, mais je ne promets rien :oZ
;o)
En fait pour pouvoir parcourir le tableau, il faut se baser sur une colonne qui ne contient pas de cellules vides entre la première ligne et la dernière ligne à tester. Le soucis dans ton tableau c'est que tu as fusionné plusieurs lignes dans la colonne A ... et idem pour d'autres colonnes.
Pour qu'une feuille Excel ou un tableau Excel puisse être utilisé comme une base de données, il ne faut pas avoir de cellules fusionnées ...
Il existe certainement un moyen, mais je ne connais pas assez Excel et ses fonctions internes pour faire mieux que je n'ai fait.
Je vais regarder si je peux contourner le problème, mais je ne promets rien :oZ
;o)
jib92
Messages postés
19
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
25 septembre 2008
1
12 sept. 2008 à 12:42
12 sept. 2008 à 12:42
oui je vois. Le problème est que je peux difficilement modifier la base de données du fait qu'une macro et multiples formules y sont attachées. et si le programme regarde toutes les cellules colonne C, il ne voit pas les cellules fusionnées comme des cellules simples?
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
12 sept. 2008 à 12:52
12 sept. 2008 à 12:52
Non puisque l'on parcours ligne par ligne et le teste se fait cellule par cellule, hors tu as des cellules fusionnées en colonne C également ... :oZ
Bonjour Polux31,
J'étais parti en we. Je n'avais pas de connexion pour te répondre. Apparement pour les cellules fusionnées il faut utiliser Mergecells. Mais je n'ai pas l'aide VBA (Pro11.msi introuvable...) donc je ne sais pas comment s'utilisent les fonctions.
J'étais parti en we. Je n'avais pas de connexion pour te répondre. Apparement pour les cellules fusionnées il faut utiliser Mergecells. Mais je n'ai pas l'aide VBA (Pro11.msi introuvable...) donc je ne sais pas comment s'utilisent les fonctions.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
15 sept. 2008 à 09:23
15 sept. 2008 à 09:23
Bonjour,
Je ne connais pas la fonction MergeCells. As-tu cherché sur le net en tapant "MergeCells Excel" dans un moteur de recherce ?.
Je n'ai pas trop le temps aujourd'hui de faire des recherche. Je crois savoir que pour des cellules fusionnées, il faut également utiliser Address pour vérifier l'adresse de la plage des cellules fusionnées.
;o)
Je ne connais pas la fonction MergeCells. As-tu cherché sur le net en tapant "MergeCells Excel" dans un moteur de recherce ?.
Je n'ai pas trop le temps aujourd'hui de faire des recherche. Je crois savoir que pour des cellules fusionnées, il faut également utiliser Address pour vérifier l'adresse de la plage des cellules fusionnées.
;o)
Oui j'ai regardé mais je n'ai pas trouvé de gens voulant faire la même chose que moi. Remarque je peux relancer une discussion sur le sujet...
Merci pour ton aide
@+
Merci pour ton aide
@+
Pourrais tu juste me dire si la modification à effectuer pour qu'il recherche le mot clef avec le km OU la durée (dans le sens et/ou) est celle ci? j'ai mis or et des parenthèses mais je suis pas sur.
If doesExistMotCle(motcle, str) = True And (CStr(ws2.Range("X" & lig2).Value) = getKms _
Or CStr(ws2.Range("Y" & lig2).Value) = getDuree) Then
Merci
If doesExistMotCle(motcle, str) = True And (CStr(ws2.Range("X" & lig2).Value) = getKms _
Or CStr(ws2.Range("Y" & lig2).Value) = getDuree) Then
Merci
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
15 sept. 2008 à 13:02
15 sept. 2008 à 13:02
Re
Oui c'est correcte ^^
;o)
Oui c'est correcte ^^
;o)
Je progresse ...
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
15 sept. 2008 à 14:21
15 sept. 2008 à 14:21
Bravo, continu ... ^^
Si tu as la soluce pour les cellules fusionnées, je suis preneur aussi, pour enrichir mes connaissances.
;o)
Si tu as la soluce pour les cellules fusionnées, je suis preneur aussi, pour enrichir mes connaissances.
;o)
Je suis en train de me battre avec ma base de données pour retirer toutes les cellules fusionnées...
Désolé. Explore la fonction Mergecells, c'est ce que j'ai vu sur les forums.
Désolé. Explore la fonction Mergecells, c'est ce que j'ai vu sur les forums.
Bonjour,
Je reviens sur le sujet parce que j'ai une modification à faire dans mon programme. (une grosse modif...)
Je souhaite toujours effectuer ma recherche par rapport a un mot clef et 2 paramètres mais cette fois je voudrais afficher les lignes correspondant au dernier entretien réalisé + tous les entretiens dejà faits.
J'ai mis dans un tableau la liste de toutes les maintenances (duree et km)
Mon idée est de rechercher dans ce tableau la valeur trouvée au préalable et d'enregistrer toutes les cellules "au dessus"
Et ainsi enregistrer Km(1)= 60000 puis Km(2) = 30000, km(3)= 20000 etc..
Ensuite faire ma recherche pour l'ensemble des Km(i) et duree(j) trouvés... C torturé mais ça peut marcher.
As tu une autre idée?
Quelle est la syntaxe pour trouver une cellule dans une colonne contenant une chaine de caracteres et enregistrer cette valeur et celles au dessus en s'arretant a la 1e case vide?
Comment modifier le programme (que tu as réalisé) pour effectuer cette recherche?
Et je m'embrouille avec mes modules, feuilles, variables public, privées, explicit... Ca marche mais c'est bancal...
Merci
Jb
Je reviens sur le sujet parce que j'ai une modification à faire dans mon programme. (une grosse modif...)
Je souhaite toujours effectuer ma recherche par rapport a un mot clef et 2 paramètres mais cette fois je voudrais afficher les lignes correspondant au dernier entretien réalisé + tous les entretiens dejà faits.
J'ai mis dans un tableau la liste de toutes les maintenances (duree et km)
Mon idée est de rechercher dans ce tableau la valeur trouvée au préalable et d'enregistrer toutes les cellules "au dessus"
Et ainsi enregistrer Km(1)= 60000 puis Km(2) = 30000, km(3)= 20000 etc..
Ensuite faire ma recherche pour l'ensemble des Km(i) et duree(j) trouvés... C torturé mais ça peut marcher.
As tu une autre idée?
Quelle est la syntaxe pour trouver une cellule dans une colonne contenant une chaine de caracteres et enregistrer cette valeur et celles au dessus en s'arretant a la 1e case vide?
Comment modifier le programme (que tu as réalisé) pour effectuer cette recherche?
Et je m'embrouille avec mes modules, feuilles, variables public, privées, explicit... Ca marche mais c'est bancal...
Merci
Jb
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
19 sept. 2008 à 11:40
19 sept. 2008 à 11:40
Bonjour,
Oui, ça devient compliqué ... je pense qu'il faut passer par des tableaux : TabKms() qui va contenir les kms etc ...
Pour tester si une variable, tu as la fonction IsNumeric() :
Fait un test en passant les deux "str" du Sub test
Sinon, il faudrait que tu me passes ton fichier par cjoint.com, pour que je regarde de plus près.
;o)
Oui, ça devient compliqué ... je pense qu'il faut passer par des tableaux : TabKms() qui va contenir les kms etc ...
Pour tester si une variable, tu as la fonction IsNumeric() :
Public sub test() Dim str As Variant str = "coucou ma maman 123" 'str = "123456" If controleNumeric(str) = False Then MsgBox str & " n'est pas numérique.",VBExclamation,"Message" Else MsgBox str & " est numérique.",VBExclamation,"Message" End If End Sub Public Function controleNumeric(byval str as Variant) as Boolean If Not IsNumeric(str) Then controleNumeric = False Else controleNumeric = True End If End Function
Fait un test en passant les deux "str" du Sub test
Sinon, il faudrait que tu me passes ton fichier par cjoint.com, pour que je regarde de plus près.
;o)
Bonjour Polux,
C'est bien gentil de ta part d'aider les gens dans le besoin. J'ai vu que tu répondais souvent aux questions posées. Merci de la part de tous. Quand on connait pas, le language vba est un vrai mystère...
Je progresse bien mais j'ai encore des choses à faire et pas des moindres.
Est il possible que je t'envoie mon fichier pour que tu le réordonne un petit peu. Principalement pour la déclaration des variables, il y en a partout et je ne sais pas si il y a des déclarations inutiles ou non.
Ce qu'il me reste à faire:
- modifier la recherche pour afficher les lignes correspondant à TOUTES les maintenances qui ont été réalisées en km et en durée (au lieu de seulement la dernière en km et dernière en durée) d'ou le tableau réalisé dans l'onglet "garantie"
-créer un deuxième mot clef (celui du haut, aucune macro affectée pour l'instant) qui fera sa recherche uniquement pour le mot clef pour les titres en gras ou en rouge (chiffres 1,2,3 -voir 4, je ne sais pas trop encore- colonne Z). Si juste 1er mot clef afficher les lignes correpondant au paragraphe (si mot clef =1 colonne Z afficher jusqu'au prochain 1..., pareil pour 2, 3 ou 4. Si présence d'un 2e mot clef afficher les lignes désirées du paragraphe désiré......................................
Je sais c'est très torturé et c'est pour ça que je reviens vers toi chef VBA.
Merci encore.
Aide moi si tu peux pour la 1e manip, la 2e je pense qu'il faut que j'y réfléchisse encore.
"Pour que ce soit clair en vba, faut deja que ca soit clair dans ta tête..."
https://www.cjoint.com/?jtmnwjKlJh
C'est bien gentil de ta part d'aider les gens dans le besoin. J'ai vu que tu répondais souvent aux questions posées. Merci de la part de tous. Quand on connait pas, le language vba est un vrai mystère...
Je progresse bien mais j'ai encore des choses à faire et pas des moindres.
Est il possible que je t'envoie mon fichier pour que tu le réordonne un petit peu. Principalement pour la déclaration des variables, il y en a partout et je ne sais pas si il y a des déclarations inutiles ou non.
Ce qu'il me reste à faire:
- modifier la recherche pour afficher les lignes correspondant à TOUTES les maintenances qui ont été réalisées en km et en durée (au lieu de seulement la dernière en km et dernière en durée) d'ou le tableau réalisé dans l'onglet "garantie"
-créer un deuxième mot clef (celui du haut, aucune macro affectée pour l'instant) qui fera sa recherche uniquement pour le mot clef pour les titres en gras ou en rouge (chiffres 1,2,3 -voir 4, je ne sais pas trop encore- colonne Z). Si juste 1er mot clef afficher les lignes correpondant au paragraphe (si mot clef =1 colonne Z afficher jusqu'au prochain 1..., pareil pour 2, 3 ou 4. Si présence d'un 2e mot clef afficher les lignes désirées du paragraphe désiré......................................
Je sais c'est très torturé et c'est pour ça que je reviens vers toi chef VBA.
Merci encore.
Aide moi si tu peux pour la 1e manip, la 2e je pense qu'il faut que j'y réfléchisse encore.
"Pour que ce soit clair en vba, faut deja que ca soit clair dans ta tête..."
https://www.cjoint.com/?jtmnwjKlJh