VBA-Excel : Comment détecter une cellule vide ou non? - Programmation
Marsh Posté le 10-03-2002 à 18:21:40
nul_olive a écrit a écrit : [Mode gros newbie on] J'ai fait une macro qui doit copier le contenu d'une cellule ds une autre. Seulement, s'il y'a déjà qqs chose ds la cellule cible, je veux que le contenu de le cellule source soit copier ailleurs (peu importe ou). Comment lui dire de vérifier que me cellule cible contient qqs chose? Voila le petit bout de macro qui me fait chier : Range("A4" ).Activate Selection.Copy Range("B25:I25" ).Select If ??????????? = 0 Then ActiveSheet.Paste End If If ??????????? = 1 Then Range("B26:I26" ).Select etc...... C quoi la fonction que je doit mettre à la place des points d'interro? Merci d'avance. |
if activecell.value=""
Marsh Posté le 10-03-2002 à 18:22:43
Fais gaffe, t'es toujours en mode gros newbie. N'oublie pas d'en sortir...
Sinon, je suis ok pour la réponse de nur.
Marsh Posté le 10-03-2002 à 21:51:10
La façon plus propre de faire est isempty(activecell)
Voici un petit exemple qui contient d'autres astuces:
Dim iI As Integer
Dim vI As Variant
Sub TestType()
' Je vérifie s'il y a déjà une feuille "TestType"
For Each vI In Worksheets
If vI.Name = "TestType" Then
' La ligne suivante empèche de devoir
' confirmer la suppression
Application.DisplayAlerts = False
' Je supprime la feuille "TestType"
vI.Delete
' Ne pas oublier de remettre les messages de confirmation
Application.DisplayAlerts = True
End If
Next vI
' J'ajoute une feuille
Worksheets.Add
' Je la renomme
ActiveSheet.Name = "TestType"
' J'y mets quelques valeurs
[A1] = 5
[B1] = 0
[C1].Formula = "=a1/b1"
[D1] = "Du texte"
For iI = 1 To 5
' J'affiche le numéro du type de contenu
' Type 5 = vbDouble
' Type 10 = vbError
' Type 8 = vbString
' Type 0 = vbEmpty
MsgBox ("La cellule " & Cells(1, iI).Address & vbCrLf _
& "est de type " & VarType(Cells(1, iI)))
If IsEmpty(Cells(1, iI)) Then
' Si la cellule est vide, je le dis
MsgBox ("La cellule " & Cells(1, iI).Address & " est vide" )
End If
Next iI
End Sub
Marsh Posté le 11-03-2002 à 18:55:01
AlainTech a écrit a écrit : La façon plus propre de faire est isempty(activecell) Voici un petit exemple qui contient d'autres astuces: Dim iI As Integer Dim vI As Variant Sub TestType() ' Je vérifie s'il y a déjà une feuille "TestType" For Each vI In Worksheets If vI.Name = "TestType" Then ' La ligne suivante empèche de devoir ' confirmer la suppression Application.DisplayAlerts = False ' Je supprime la feuille "TestType" vI.Delete ' Ne pas oublier de remettre les messages de confirmation Application.DisplayAlerts = True End If Next vI ' J'ajoute une feuille Worksheets.Add ' Je la renomme ActiveSheet.Name = "TestType" ' J'y mets quelques valeurs [A1] = 5 [B1] = 0 [C1].Formula = "=a1/b1" [D1] = "Du texte" For iI = 1 To 5 ' J'affiche le numéro du type de contenu ' Type 5 = vbDouble ' Type 10 = vbError ' Type 8 = vbString ' Type 0 = vbEmpty MsgBox ("La cellule " & Cells(1, iI).Address & vbCrLf _ & "est de type " & VarType(Cells(1, iI))) If IsEmpty(Cells(1, iI)) Then ' Si la cellule est vide, je le dis MsgBox ("La cellule " & Cells(1, iI).Address & " est vide" ) End If Next iI End Sub |
t'es sur que ça marche isempty?
je croyais que ça servait a verifier si une variable etait affectée ou non
Marsh Posté le 11-03-2002 à 21:34:53
Fais tourner l'exemple, tu verras.
J'ai pour principe de vérifier ce que je dis (histoire de pas TROP dire de conneries.
Le code envoyé est un copier/coller de celui que j'ai testé avant de l'envoyer.
Marsh Posté le 02-02-2002 à 14:06:32
[Mode gros newbie on]
J'ai fait une macro qui doit copier le contenu d'une cellule ds une autre. Seulement, s'il y'a déjà qqs chose ds la cellule cible, je veux que le contenu de le cellule source soit copier ailleurs (peu importe ou).
Comment lui dire de vérifier que me cellule cible contient qqs chose?
Voila le petit bout de macro qui me fait chier :
Range("A4" ).Activate
Selection.Copy
Range("B25:I25" ).Select
If ??????????? = 0 Then
ActiveSheet.Paste
End If
If ??????????? = 1 Then
Range("B26:I26" ).Select
etc......
C quoi la fonction que je doit mettre à la place des points d'interro?
Merci d'avance.