Donner une valeurs à des cellules sous condition (If Then Else)

titoo22 Messages postés 15 Date d'inscription vendredi 15 décembre 2000 Statut Membre Dernière intervention 12 août 2008 - 9 juil. 2008 à 13:27
titoo22 Messages postés 15 Date d'inscription vendredi 15 décembre 2000 Statut Membre Dernière intervention 12 août 2008 - 11 juil. 2008 à 09:04
Salut tout le monde,
J'ai un ptit soucis, je dois donner une valeur à des cellules de la colonnes D en fonctione de valeurs de la colonne C (Toutes en string). J'ai commencé un ptit programme mais il ne fonctionne pas et je n'arrive pas à savoir comment faire... Je vous donne le code :
'Macro créée le 08/07/08 par MOI
'Attribution des code plateforme aux centres



Sub code_pt_centre()
    counter = 0
    Range("C3").Select
    C = C3 + counter
    D = D3 + counter



While C <> ""
'BO? utilisé pour renvoyer toutes les cellules ayant BO+1 caractère _
 même principe pour HO?
    if C="BIS" or "BO?" or "CFS" or "CPL" or "HO?" or "LAC" or "LLJ" or "MIM" _
          or "MES" or "MOC" or "POR" or "PAL" or "SME" or "SEB" or "SEI" _
          or "SSC" then D="BAC"
    End If
      
   
    counter = counter + 1
Wend




End Sub



Donc voilà si quelqu'un peut m'aider, ça m'enlèverais une belle épine du pied !!
@plouche

6 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
9 juil. 2008 à 14:08
Je ne comprends pas ton code, C3 et D3 sont des variables ? Je pense que ce que tu veux faire, c'est mettre la valeur de C3 dans la variable C non ? Dans ce cas, il faut écrire (à condition que tu sois en VBA, mais vu le code, je pense que c'est bien le cas) :
C = Range("C3").value + counter

Ensuite, ta boucle est mal faite je crois, parce que ton bout de code :
C = C3 + counter est en dehors de ta boucle While
Résultat, tu as beau faire counter = counter + 1, ta valeur de C ne change pas et donc, tu ne sortiras jamais de ta boucle (par définition, ta variable C vaut toujours 0, et non "")

D'ailleurs, il faut se poser la question à ce moment là du type de tes variables. Pas de déclaration d'effectuée là.

Enfin, dernière chose, personnellement, pour faire ce que tu veux, une formule Excel suffit, pas besoin de s'embêter avec une macro qu'il faut lancer.

Tu peux utiliser la formule SI, par contre, il faut savoir que tu es limité à 9 conditions, donc, ça ne rentre pas trop dans ton cas. tu peux utiliser une RECHERCHEV ou RECHERCHEH, ce qui me semble bien indiqué pour ce que tu veux obtenir.
Ou alors, tu peux même créer ta propre fonction si tu veux

Molenn
0
titoo22 Messages postés 15 Date d'inscription vendredi 15 décembre 2000 Statut Membre Dernière intervention 12 août 2008
9 juil. 2008 à 15:00
Merci Molenn, tu as raison, je vais essayer d'utiliser une fonction déjà existente plutôt que de me prendre la tête avec une macro.
0
titoo22 Messages postés 15 Date d'inscription vendredi 15 décembre 2000 Statut Membre Dernière intervention 12 août 2008
9 juil. 2008 à 15:02
Par contre, j'aurais besoin pour un auter programme d'incrémenter mes cellules, c'est ce que j'ai voulu faire là, en fait, je voulais passer de C3 à C4 etc... mais je n'y arrive pas. Y a t il une solution simple pour l'incrémentation ou la solution du compteur est elle valable ?
merci
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
9 juil. 2008 à 17:06
Incrémenter des cellules ? Dans quel sens ?
Si je te suis bien, tu veux passer d'une cellule à une autre ...
Je vais illuster par un petit bout de code : Tu veux afficher le contenu de toutes les cellules d'une plage A1:C:10

'Définition des variables
Dim Ligne as integer
Dim Colonne as integer
Dim i as integer   'Variable de boucle
Dim j as integer   'Variable de boucle

'Initialisation des variables
Ligne = 10   'Nb maximum de ligne de ta plage
Colonne = 3 'Nb maximum de colonnes de ta plage, ici C

'Boucle pour afficher le contenu des cellules
for i = 1 to Colonne
   for j = 1 to Ligne
      msgbox cells(j,i).value
   next j
next i

Molenn
0

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

Posez votre question
titoo22 Messages postés 15 Date d'inscription vendredi 15 décembre 2000 Statut Membre Dernière intervention 12 août 2008
11 juil. 2008 à 08:58
Ok, merci.
En fait, j'ai une colonne avec des dates (déjà je ne sais pas quelle dimension donner à ma variable est ce que la catégorie string fonctionnera ou il y a un type spécial ??) ensuite, il faut que je vérifie que ma "date +1" (c'est à dire la cellule suivante) si elle est égale ou non. Si elle est différente, je dois la copier dans un autre fichier, en dessous de celle déjà copiée précédemment. Il faut que je fasse une boucle du style :
If (cellule) date+1<>date Then copy (cellule) date+1paste (cellule)date+1 en A2 (par exemple, si j'ai copié la première date en A1).

Mon problème, c'est que je ne sais pas comment faire pour qu'il balaye la colonne de départ de cellule à cellule et qu'il effectue ces opérations.

Voilà.
Je ne sais pas si j'ai été suffisament claire, dis moi si tu ne comprends pas quelque chose, je m'efforcerais de t'éclairer.

Si quelqu'un peut m'aider, merci.
0
titoo22 Messages postés 15 Date d'inscription vendredi 15 décembre 2000 Statut Membre Dernière intervention 12 août 2008
11 juil. 2008 à 09:04
Ah j'ai oublié de dire que je ne pouvais pas utiliser la boucle for parce que c'est un tableau qui change de taille régulièrement alors je ne peux pas définir le nombre de ligne total. En plus, je ne commence pas mon copier coller à la première cellule de ma colonne mais pour ça, j'ai déjà fait un bout de programme pour repérer à quelle cellule commencer.
0
Rejoignez-nous