[Déplacé .Net --> VBA] blocage

greg7862 Messages postés 4 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 1 novembre 2009 - 1 nov. 2009 à 16:40
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 - 1 nov. 2009 à 21:12
Bonjour,


Je recherche les lignes de commande VB pour supprimer le contenu d'une cellule si la valeur d'une cellule est égale à un texte Càd :

J'ai dans la colonne D le Statut d'une demande (terminé, en cours, pris_en_compte, realise et planifie)
et dans la colonne I les dates de réalisation (14/10/2009 etc....)
Comment puis-je supprimer le contenu en maco VBA si :
la cellule D80 = "planifie" la cellule I80 on supprime le contenu
la cellule D85 = "en cour" la cellule I85 on supprime le contenu
la cellule D86 = "realise" la cellule I86 on lui laisse le contenu
etc....

D'avance merci pour votre aide

13 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 nov. 2009 à 17:29
Salut
(essaye de choisir la bonne catégroie la prochaine fois)
Puisque les cellules ne se suivent pas, on ne peut pas utiliser de boucle.
Il faut donc créer une suite de test :
    If Range("D80").Value = "planifie" Then Range("I80").ClearContents
    If Range("D85").Value = "en cour" Then Range("I85").ClearContents
    ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
1 nov. 2009 à 17:33
Bonjour,
Le "Etc..." m'inquiète (si la liste est longue....
Il sera plus judicieux d'utiliser un array contenant, par exemple,

toto = array(80,85,86, .....)
et de boucler sur les items de toto
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
1 nov. 2009 à 17:36
Pardon, 2 arrays ...

toto comme vu
et
titi = array("planifie","en cours", ... etc... (dans l'ordre de toto)
0
greg7862 Messages postés 4 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 1 novembre 2009
1 nov. 2009 à 17:56
Merci pour ces réponses mais comme je suis débutant dans vba.
En clair je veux tester la valeur des cellules de la colonne D est si la valeur la cellule D80 = "planifie" ou "en cour" ou "autes valeur" je supprime le contenu de la cellule I80 test à faire en boucle sur la colonne D+1 et I+1 jusque la fin de mon tableau.

En espérant etre plus clair dans ma demande

d'avance merci

GG7862
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
1 nov. 2009 à 18:42
Re,

Tu n'as alors besoin que d'un seul Array (toto) et de boucler sur ses items puisque la conditions sera la même partout (si planifie" ou "en cours" ou = "autres valeurs")
Mais (justement parce-que tu es débutant) commence par l'intéresser aux Array (tu en auras souvent besoin). Entraîne-toi d'abord à en afficher (par msgbox) les itemps dans une boucle For... to...
Rien qu'en faisant cela, tu vas vite comprendre le reste... (et cela, c'est d'abord apprendre à utiliser un Array et une voucle For ...to...)
Bonne étude.
0
greg7862 Messages postés 4 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 1 novembre 2009
1 nov. 2009 à 18:51
Merci
mais j'ai besoin d'info en urgence sur ces boucles pour lancer mon test

Meric d'avance
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
1 nov. 2009 à 18:58
Et attends un peu, là ...

Ton premier message montrait des solutions de continuité, ce qui justifiat l'emploi d'un Array... et tu nous dis maintyenant tout autre chose (toutes les cellules de la colonnes D) !
Il faut toujours être précis, et ce d'emblée, en posant une question.
Tu n'as donc nul besoin d'un array (ni toto, ni autre), mais d'une boucle For numeroligne = 1èreligne de la colonne D to dernièreligne de la colonne D
et exécuter ta condition dans cette boucle (si... alors le même numeroligne de la colonne I = ""

A toi, là, hein... (trop facile)
0
greg7862 Messages postés 4 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 1 novembre 2009
1 nov. 2009 à 19:10
la réponse de jack été plus clair là je n'y comprend rien!!!
pouvez vous etre plus explicite un peu comme jack

merci d'avance
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
1 nov. 2009 à 20:01
Je refuse, tout au moins tant que (après avoir ouvert ton aide en ligne... un peu...) tu ne montres pas tes efforts et ne nous dise pas clairement où tu "butes" (code montré) !
Désoilé, ami, mais là ... trop simple (une autre fois)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 nov. 2009 à 20:55
En fait, je n'avais pas compris que tu voulais effacer les cellules quand UN des mots apparait :
  Dim xx As Object
  For Each xx In Range("D80:D30000")
    If xx.Value = "planifie" Or _
       xx.Value = "en cour" Or ...
       xx.Value = ... Then xx.Offset(0, 5).ClearContents
    ...
  Next
J'ai toujours un doute sur l'ordre des paramètre de Ofset --> Voir l'aide

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
1 nov. 2009 à 21:02
T'es bien gentil, Jack (je trouve).
Il va sûrement progresser, maintenant, c'est sûr ...

PS : il pourrait même se passer du Offset et utiliser un For ... to ..., dès lors qu'il sait déjà qu'il traite la colonne D et modifie la colonne I sur la même ligne ...
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
1 nov. 2009 à 21:12
Sans compter quil pourrait totalement se passer de vba (une formule en colonne D ferait l'affaire)
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
1 nov. 2009 à 21:12
En colonne I, pardon ...
0
Rejoignez-nous