Vba .hasformula et .clear contents

Résolu
vbabeginner -  
 vbabeginner -
Bonjour,

je cherche à faire une petite procédure qui une fois un certain nombres de cellules sélectionnées par l'utilisateur, vérifie si les cellules contiennent ou non une formule et si les cellules n'en contiennent pas, la procédure efface le contenu de ces cellules.

Voici mes lignes de codes:

Sub Myfirstlines()
Dim SelCellules As Range
Dim Cellules As Range
On Error Resume Next
Set SelCellules = Application.InputBox("Select range of cells to act upon", "Cell selection", 8)
For Each Cellules In SelCellules
If Cellules.HasFormula = False Then
Cellules.ClearContents
End If
Next
End Sub

Merci par avance pour votre aide

2 réponses

alena20 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour,

Si la verification concerne aussi les actions simples comme "=A1+B1" chaque formula contient '=' au debut, alors il reste de verifier s'il y a "=" au debut.

Sub Myfirstlines() 
Dim SelCellules As Range 
Dim Cellules As Range 

On Error Resume Next 

Set SelCellules = Application.InputBox("Select range of cells to act upon", "Cell selection", Type:=8) 
    For Each Cellules In SelCellules 
        If Left(Cellules.Formula, 1) = "=" Then 
            Cellules.ClearContents 
        End If 
    Next 
End Sub 


Cord, Alena
0
alena20 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   2
 
En effet, ca marche aussi avec Cellules.HasFormula. Je pense l'erreure a ete en Application.InputBox.Il faulait inquer le type..dans tous les cas ca marche chez moi.
Sub Myfirstlines()
Dim SelCellules As Range
Dim Cellules As Range

On Error Resume Next

Set SelCellules = Application.InputBox("Select range of cells to act upon", "Cell selection", Type:=8)
    For Each Cellules In SelCellules
        If Cellules.HasFormula = False Then
                 Cellules.ClearContents
        End If
    Next
End Sub


Cord,Alena
0
vbabeginner
 
Merci,
je pensais avoir indiqué le type en ajoutant "8" a la fin de mon expression Application.Inputbox mais Type:= semble etre important et la solution à mon probleme.
Cordialement
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Sub Myfirstlines()
  Dim Cellules As Range
  On Error Resume Next
  'Mettre le nom de la feuille
  With Worksheets("feuil1")
    Set SelCellules = Application.InputBox(prompt:="Select range of cells to act upon", Title:="Cell selection", Type:=8)
    For Each Cellules In SelCellules
      If Cellules.HasFormula = True Then
        Cellules.ClearContents
      End If
    Next
  End With
End Sub


Bonne suite
0
vbabeginner
 
Merci,
l'objectif est de conserver les formules dans les cellules qui en contiennent donc .hasformula=False, mais mon erreur semble provenir du fait que je n'ai pas précisé que 8 etait un Type:=
Cordialement
0