Effacer le contenu de la selection

Salut, lorsque je selectionne des cellules d'une colonnes, j'ai une macro qui copie cette selection a un autre endroit de la colonne, par un simple clic de souris a ce nouvel endroit. La selection demeure en pointille et j'aimerais m'en prevaloir afin d'effacer son contenu. Y a t-il une syntaxe pour ca en VBA.

Bonjour

Au lieu d'utiliser Copy utilises Cut

Salut salut! J'ai essaye mais je ne veux pas retrancher les cellules, ce que fait cut. Il faut seulement que je les effaces, si non j'ai un decalage avec les autres colonnes du tableau.

Bonjour

Cut ne décale rien

Contrairement à Delete

Ou alors je ne sais plus

Tu as raison, comme d'habitude! mon probleme devait etre ailleurs et j'ai cru que c'etait a cause de "cut". La, ca marche!

J'ai un autre probleme pas trop difficile pour toi: comment sortir et ne pas executer la section "autoincrementation" si la condition est vrai pour FlgCopy?

If FlgCopy Then
      Lig = Selection.Row
      FlgCopy = False
      Application.EnableEvents = False
      Range("B" & Lig).Select 'Shift:=xlDown
      ActiveSheet.Paste
      Range("B" & Ligne & ":D" & Ligne + Nb).Select

      'Application.CutCopyMode = xlNone 'pour desactiver ce mode (permet d'enlever la selection en pointille si on faisait "COPIER")
      Selection.ClearContents
      Application.EnableEvents = True
  End If

  'Auto incrementation:
  If non Then Exit Sub  'non est une variable public si "true", on bypass cette partie de la macro evenementielle
  If Target.Column <> 1 Then Exit Sub         ' En dehors de la colonne A on dégage
  If Target.Cells(1, 1) <> "" Then            ' Quelque chose
    On Error Resume Next                      ' On masque les erreurs
    Nombre = "&H" & Target.Cells(1, 1)        ' On récupére la valeur (on considère que c'est en hexa)
    If Err.Number <> 0 Then Exit Sub          ' Si une erreur on dégage
    On Error GoTo 0                           ' Gestion des erreurs normale
    For Each cel In Target                    ' Pour chaque élément de la zone
      cel = Right("0000" & Hex(Nombre), 4)    ' On écrit la valeur en Hexa (formatée à 4 digits)
     Nombre = Nombre + 1                     ' On augmente la valeur
    Next cel                                  ' Passe à la cellule suivante
  End If

End Sub

Bonsoir

Sans le pourquoi du comment ni sans fichier

Il suffit de mettre l'auto incrémentation dans la condition FlgCopy

Avoir

  If FlgCopy Then
    Lig = Selection.Row
    FlgCopy = False
    Application.EnableEvents = False
    Range("B" & Lig).Select 'Shift:=xlDown
    ActiveSheet.Paste
    Range("B" & Ligne & ":D" & Ligne + Nb).Select

    'Application.CutCopyMode = xlNone 'pour desactiver ce mode (permet d'enlever la selection en pointille si on faisait "COPIER")
    Selection.ClearContents
    Application.EnableEvents = True

    'Auto incrementation:
    If non Then Exit Sub  'non est une variable public si "true", on bypass cette partie de la macro evenementielle
    If Target.Column <> 1 Then Exit Sub         ' En dehors de la colonne A on dégage
    If Target.Cells(1, 1) <> "" Then            ' Quelque chose
      On Error Resume Next                      ' On masque les erreurs
      Nombre = "&H" & Target.Cells(1, 1)        ' On récupére la valeur (on considère que c'est en hexa)
      If Err.Number <> 0 Then Exit Sub          ' Si une erreur on dégage
      On Error GoTo 0                           ' Gestion des erreurs normale
      For Each cel In Target                    ' Pour chaque élément de la zone
        cel = Right("0000" & Hex(Nombre), 4)    ' On écrit la valeur en Hexa (formatée à 4 digits)
        Nombre = Nombre + 1                     ' On augmente la valeur
      Next cel                                  ' Passe à la cellule suivante
    End If
  End If

Merci Banzai, je vais essayer ca en prenant soin de mettre la bonne condition a "non".

Excuse-moi de ne pas fournir de fichier, c'est rendu assez complique a faire. Le fichier est trop gros et la version pour le forum n'est plus a jour. Il faudra que je refasse ca!

Bonsoir

Désolé mais j'ai lu en travers

CAPUCIN a écrit :

comment sortir et ne pas executer la section "autoincrementation" si la condition est vrai pour FlgCopy?

Il faut utiliser le trio If ...Else ...End IF

Ton code devient

 If FlgCopy Then
    Lig = Selection.Row
    FlgCopy = False
    Application.EnableEvents = False
    Range("B" & Lig).Select 'Shift:=xlDown
   ActiveSheet.Paste
    Range("B" & Ligne & ":D" & Ligne + Nb).Select

    'Application.CutCopyMode = xlNone 'pour desactiver ce mode (permet d'enlever la selection en pointille si on faisait "COPIER")
   Selection.ClearContents
    Application.EnableEvents = True
  Else
    'Auto incrementation:
   If non Then Exit Sub  'non est une variable public si "true", on bypass cette partie de la macro evenementielle
   If Target.Column <> 1 Then Exit Sub         ' En dehors de la colonne A on dégage
   If Target.Cells(1, 1) <> "" Then            ' Quelque chose
     On Error Resume Next                      ' On masque les erreurs
     Nombre = "&H" & Target.Cells(1, 1)        ' On récupére la valeur (on considère que c'est en hexa)
     If Err.Number <> 0 Then Exit Sub          ' Si une erreur on dégage
     On Error GoTo 0                           ' Gestion des erreurs normale
     For Each cel In Target                    ' Pour chaque élément de la zone
       cel = Right("0000" & Hex(Nombre), 4)    ' On écrit la valeur en Hexa (formatée à 4 digits)
       Nombre = Nombre + 1                     ' On augmente la valeur
     Next cel                                  ' Passe à la cellule suivante
   End If
 End If

Cela devrait aller mieux

Si FlgCopy est True on fait la 1ère partie sinon on fait que la 2ème

C'est ce que tu voulais

Oui Banzai, ca fonctionne. j'avais reussi mais c'etait plus complique! Donc avec un else, la 2ieme partie ne s'executera jamais si la premiere s'excecute?

Merci!

Bonsoir

CAPUCIN a écrit :

Donc avec un else, la 2ieme partie ne s'executera jamais si la premiere s'excecute?

Tout à fait ..... cela

Parfait Banzai, je vais pouvoir fermer le post!

Merci.

Rechercher des sujets similaires à "effacer contenu selection"