VBA : copier valeurs cellules non " "

SARdynamite

XLDnaute Junior
Bonjour, sans base VBA j'ai essayer pendant 1 heure de bidouiller mais sans succès.

J'ai une plage C5:C15 de formules renvoyant une valeur ou " "

J'aimerais qu'à chaque modification d'une cellule de la plage B5:B15, les valeurs (pas les formules) des cellules non " " de C5:C15 soient copiées en D5:D15

Les cellules " " de C5:C15 ne devant donc pas être copiées.

Je me remets à vous car j'avoue sècher. Merci d'avance.
 

SARdynamite

XLDnaute Junior
Re : VBA : copier valeurs cellules non " "

J'avance pas à pas. J'en suis donc là.

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range
Dim i As Long

Application.ScreenUpdating = False
Set Plage = Range("K28:K267")

If Not Intersect(Plage, Target) Is Nothing Then
    Application.EnableEvents = False
    For i = 28 To 267
        If Cells(i, 51).Value <> "" Then
            Cells(i, 56).Value = Cells(i, 51).Value
        End If
        If Cells(i, 52).Value <> "" Then
            Cells(i, 57).Value = Cells(i, 52).Value
        Else: Cells(i, 57).Clear
        End If
        If Cells(i, 53).Value <> "" Then
            Cells(i, 58).Value = Cells(i, 53).Value
        Else: Cells(i, 58).Clear
        End If
        If Cells(i, 54).Value <> "" Then
            Cells(i, 59).Value = Cells(i, 54).Value
        Else: Cells(i, 59).Clear
        End If
    Next i
    Application.EnableEvents = True
End If

Set Plage = Nothing

Range("B5").Select

End Sub

Est-il possible de simplifier / accélérer le script ? Merci!
 

Si...

XLDnaute Barbatruc
Re : VBA : copier valeurs cellules non " "

salut

pourquoi vouloir parcourir toutes les lignes à chaque fois ?
Cela pourrait suffire
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim L As Byte, J As Byte
  If Target.Count > 1 Or Intersect(Range("K28:K267"), Target) Is Nothing Then Exit Sub
  L = Target.Row
  For J = 51 To 54
    If Cells(L, J) <> "" Then
      Cells(L, J).Copy
      Cells(L, 5 + J).PasteSpecial xlPasteValues
    Else
      Cells(L, 5 + J).Clear
    End If
    Next
    Application.CutCopyMode = False
    Range("B5").Select
End Sub
sinon tu peux rajouter ta boucle.

remarque : "Cells(L, 5+J).Clear", c'est aussi pour supprimer le format ?
Si... tu ne veux qu'effacer le contenu, tu peux supprimer le test.
 

SARdynamite

XLDnaute Junior
Re : VBA : copier valeurs cellules non " "

Effectivement je ne voulais pas supprimer le format ! Détail que je n'avais initialement même pas remarqué.

Génial, je suis maintenant paré. Ton raccourci est rapide comme l'éclair.

Je vous remercie tous autant que vous êtes car vous m'avez débloqué et surtout je pense avoir compris plusieurs notions au passage et me sent un poil plus autonome.

Bonne journée à vous !
 

SARdynamite

XLDnaute Junior
Re : VBA : copier valeurs cellules non " "

Rebonsoir,

ULTIME question, le code de la feuille que vous m'avez fourni déclenche un évenement à chaque modification de la plage de cellules voulues.

Cependant, appuyer sur ENTREE sans rentrer de valeur ne déclenche pas l'évènement. Serait-il possible que ce soit le cas aussi ?
Merci beaucoup
 

Pierrot93

XLDnaute Barbatruc
Re : VBA : copier valeurs cellules non " "

Bonjour,

lorsque tu appuies sur "enter" si pas à "l'intérieur" de la cellule, c'est l'événement ci-dessous qui se déclenche...
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

bonne journée
@+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 472
Messages
2 088 709
Membres
103 928
dernier inscrit
MIKETUAU