Vba else if probleme

Vba else if probleme - VB/VBA/VBS - Programmation

Marsh Posté le 06-02-2009 à 11:49:55    

bonjour,  
J'essaye de me mettre au vba pour effacer des ligne d'un fichier excel de 200 feuille mais mon code ne marche pas :??:  
 
If A83 = "Script" Then
Rows("84:85" ).Select
    Selection.Delete Shift:=xlUp
ElseIf A84 = "Script" Then
Rows("85:86" ).Select
    Selection.Delete Shift:=xlUp
ElseIf A85 = "Script" Then
Rows("86:87" ).Select
    Selection.Delete Shift:=xlUp
    Else
End If
 
 
 
Je pense que mon problème viens du if then else mais je ne vois pas quoi.
Pouvez vous m'aider?
 
Merci

Reply

Marsh Posté le 06-02-2009 à 11:49:55   

Reply

Marsh Posté le 06-02-2009 à 12:12:01    

Salut
Alt+F11
F5 sur macro à exécuter
>>>>> Erreur de compilation : variable non définie

Reply

Marsh Posté le 06-02-2009 à 12:18:28    

Désolé mais je ne comprend pas lorsque j'ai fais F5 cella a exécuté seulement un des if  
Merci.

Reply

Marsh Posté le 06-02-2009 à 14:10:41    

Citation :

If A83 = "Script" Then

Est-ce que A83 est bien le nom d'une variable ?
 
Si A83 est censé être le contenu de la cellule A83, alors il faut écrire le test comme ceci :

If ThisWorkbook.Sheets("Feuil1" ).Cells(83, 1).Value = "Script" Then

Reply

Marsh Posté le 06-02-2009 à 14:36:05    

Merci mais je ne comprend ce morceaux de code pourrais tu m'expliquer s'il te plaît ?  
Merci.

Reply

Marsh Posté le 06-02-2009 à 15:36:40    

Je ne faisais qu'une supposition, mais je me trompe peut-être.
Si A83 est le nom d'une variable alors le code initial est bon.
Si A83 est sensé être le contenu d'une cellule, alors il faudrait récupérer le contenu de la manière que j'ai montrée plus haut (ou d'une autre manière, car il y a souvent plusieurs manières pour faire la même chose).

Reply

Marsh Posté le 08-02-2009 à 12:29:55    

Bonjour,
 
Une piste avec le code ci-dessous
 
'/// Si une condition est vraie, les autres ne sont pas estimées ///
Sub aa()
If [A83] = "Script" Then
  Rows("84:85" ).Delete Shift:=xlUp
ElseIf [A84] = "Script" Then
  Rows("85:86" ).Delete Shift:=xlUp
ElseIf [A85] = "Script" Then
  Rows("86:87" ).Delete Shift:=xlUp
End If
End Sub
 
'/// Vérifie la condition de toutes les cellules (A85  A84  A83)
'/// et si elle s'avère supprime les lignes concernées
'/// ABSOLUE nécessité de faire du plus grand au plus petit
'/// car si on efface d'abord les lignes 84:85 les lignes en dessous
'/// sont décalées d'un désincrément de 2 lignes
Sub bb()
If [A85] = "Script" Then Rows("86:87" ).Delete Shift:=xlUp
If [A84] = "Script" Then Rows("85:86" ).Delete Shift:=xlUp
If [A83] = "Script" Then Rows("84:85" ).Delete Shift:=xlUp
End Sub
 
 
Cordialement.
 
PMO
Patrick Morange

Reply

Marsh Posté le 11-02-2009 à 08:47:53    

Désolé je n'ai pas pu répondre plus tôt je te remercie pour ta réponse je vais tester sa.
merci.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed