If, then, else

kems

XLDnaute Nouveau
Bonjour tout le monde,
J'aurai besoin d'un coup de main s'il vous plait.
Sur vba excel, je récupère le numéro de ligne (nommé "x") d'une cellule grâce à "Application.Match". Cependant il se peut que dans ma plage de donnée, la cellule recherché est inexistante, donc x n'a pas de valeur.
Je voudrai quand x existe, effectuer une procédure, et quand il n'existe pas ne rien faire.
Comment codifier celà svp?
ex : if x <> #N/A then......else....?

Merci de votre aide
 

kems

XLDnaute Nouveau
Re : If, then, else

Merci les amis pour vos réponses. Problème résolu.
Cependant un autre se pose...
Dans ma feuille excel j'ai des données de la colonne A à Z. J'ai besoin de supprimer toute plage de données (de A à E) pour laquelle la colonne C est vide. Mon code est le suivant :
Code:
Sub sup()

  For i = 2 To Range("A2").End(xlDown).Row
      If Cells(i, 3).Value = "" Then
      Range(Cells(i, 1), Cells(i, 5)).Select
      Selection.Delete shift:=xlUp
      i = i - 1
      End If
     Next i
  End Sub

Le problème est le suivant : lors de l'execution de la macro, à la dernière ligne, la macro bug. Je pense que c'est parceque range("A2").end(xldown).row est variable du fait de la suppression de la selection.

Pourriez vous m'aider svp? Devrais-je vous attacher le document pour mieux vous faire comprendre mon soucis?

Merci encore
 

kems

XLDnaute Nouveau
Re : If, then, else

Problème résolu encore une fois,
Code:
Sub sup()

  For i = Range("A65536").End(xlup).Row to 2
      If Cells(i, 3).Value = "" Then
      Range(Cells(i, 1), Cells(i, 5)).Select
      Selection.Delete shift:=xlUp
      End If
     Next i
  End Sub

et voila comme ca ca marche.

Merci et à bientot
 

bqtr

XLDnaute Accro
Re : If, then, else

Bonjour kems, tototiti2008, Said

Il manque le Step -1 pour que ton code fonctionne (un oubli de recopie :))

Autrement tu n'est pas obligé de sélectionner la plage avant de la supprimer la ligne. Dans la plus part des cas Le Select ne sert à rien et ralenti l'exécution du code.
Tu peux faire ceci :

Code:
Sub sup()
Dim i As Long
Application.ScreenUpdating = False
  For i = Range("A65536").End(xlUp).Row To 2 Step -1
      If Cells(i, 3).Value = "" Then Rows(i).Delete
  Next i
Application.ScreenUpdating = True
End Sub
Bonne soirée
 

bqtr

XLDnaute Accro
Re : If, then, else

Re,

Oupssss, autant pour moi :(

La même chose sans les Select (j'aime pas les Select :D)

Code:
Sub sup()
Dim i As Long
Application.ScreenUpdating = False
  For i = Range("A65536").End(xlUp).Row To 2 Step -1
      If Cells(i, 3).Value = "" Then Range(Cells(i, 1), Cells(i, 5)).Delete shift:=xlUp
  Next i
Application.ScreenUpdating = True
End Sub

A+
 

tototiti2008

XLDnaute Barbatruc
Re : If, then, else

Bonjour bqtr, Said, kems,

Vieille habitude de programmation : "si tu désactives quelque chose, prend l'habitude de le réactiver à la fin", même si ce n'est pas obligatoire... Le jour où c'est obligatoire, tu auras pris l'habitude de le faire :)
 

bqtr

XLDnaute Accro
Re : If, then, else

Re,

Si, normalement à la fin de la macro Application.ScreenUpdating se réactive tout seul, mais c'est déjà arrivé que cela me pose des problèmes.
Et puis en programmation, il vaut mieux prendre l'habitude de réactiver ce que l'on a désactiver.
Ca peut éviter des mauvaises surprises.

A+
 

kems

XLDnaute Nouveau
Re : If, then, else

Merci les gars, je retiens le conseil!

Autre chose svp...

J'aimerai automatiser à l'aide d'une macro, la création d'un tableau croisé dynamique. Cependant lorsque je lance l'enregistreur de macro et réexecute cette dernière, elle ne fonctionne pas.
Ma plage de données étant fixe, et les données changeant régulièrement, j'aimerai automatiser la création du TCD.
Sauriez vous comment s'y prendre?
Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 388
Messages
2 087 869
Membres
103 672
dernier inscrit
ammarhouichi