Vba test sur une valeur numérique

Résolu/Fermé
jib92 - 10 sept. 2008 à 11:42
 jib92 - 22 sept. 2008 à 08:16
Bonjour,

Je voudrais afficher dans une cellule une valeur en fonction d'une autre cellule, mais je suis débutant et je n'ai pas la syntaxe en vba.

Ce que je souhaiterais écrire:

Range("F14").Select ( si j'ai bien compris cela me permet de travailler dans cette cellule)

If ("D14") < 19999 Then ActiveCell.FormulaR1C1 = 10000
If 20000 < ("D14") < 29999 Then ActiveCell.FormulaR1C1 = 20000
...

Ce que je souhaiterais c'est afficher 10000 si la valeur dans la cellule D14 est entre 10000 et 19999, 20000 si compris entre 20000 et 29999....

Ca ne doit pas être bien compliqué mais là je vois pas...

Merci.

Je travaille sous Excel 2003
A voir également:

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
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...
0
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
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)
0
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
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?
0
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
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
0
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.
0

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
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)
0
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

@+
0
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
0
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
Re

Oui c'est correcte ^^

;o)
0
Je progresse ...
0
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
Bravo, continu ... ^^

Si tu as la soluce pour les cellules fusionnées, je suis preneur aussi, pour enrichir mes connaissances.

;o)
0
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.
0
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
0
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
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() :

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)
0
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
0
polux ?
0