Se connecter avec
S'enregistrer | Connectez-vous

[vba] variable qui devrait changer de valeur

Dernière réponse : dans Programmation

Ce que je souhaite faire: dans la première colonne de la feuille j'ai des cellules qui contiennent des valeurs (jusqu'à une cellule vide qui marque la fin), quand la cellule commence par "Commercial" alors insérer une ligne.
Pour ça j'ai écrit un code qui récupère les dix première lettres de la cellule en commençant par la cellule A1, si elles sont égales à "Commercial" alors insérer une ligne et passer à la cellule du dessous, sinon passer à la cellule du dessous.
Le problème c'est que ma variable "debut" qui contient les dix lettres ne change pas de valeur: elle garde toujours les dix premières lettres de A1. Je souhaiterai que la variable "debut" récupère les lettres de la cellule active, qui change à chaque fois.

Voici mon code qui ne marche pas:

  1. Sub macro()
  2. Dim debut
  3. debut = Left(ActiveCell.Value, 10)
  4. Range("A1").Select
  5. Do While ActiveCell <> ""
  6. If debut = "Commercial" Then
  7. Selection.Insert Shift:=xlDown
  8. ActiveCell.Offset(1, 0).Select
  9. Else
  10. ActiveCell.Offset(1, 0).Select
  11. End If
  12. Loop
  13. End Sub


Si quelqu'un a une idée, merci!
Lassé par la pub ? Créez un compte

Citation :
Voici mon code qui ne marche pas:

Et ca ne risque pas!! :D 
regarde où est placé ton do while...tu n'attribue une valeur à ta variable debut que lors de ton premier passage. d'où le fait quelle ne change pas.
Il faut que ta ligne
  1. debut = Left(ActiveCell.Value, 10)

soit après ton do while.

et, histoire de virer 2 lignes qui ne servent à rien:
  1. Selection.Insert Shift:=xlDown
  2. ActiveCell.Offset(1, 0).Select
  3. Else
  4. ActiveCell.Offset(1, 0).Select
  5. End If
  6. Loop

peu devenir
  1. Selection.Insert Shift:=xlDown
  2. End if
  3. ActiveCell.Offset(1, 0).Select
  4. Loop

étant donné que tu réalise la même chose dans les 2 cas.
Lassé par la pub ? Créez un compte