Valeur non écrite dans la cellule de destination aprés exécution macro?
Bonjour
je n'arrive pas à m'expliquer pourquoi une valeur copier dans une feuille n'est pas visible dans la cellule de destination...?
Alors que pour d'autres tout se passe bien....
dans l'exemple, impossible de copier cellule C5 vers A3,
Sub Enregistrer()
'
' Enregistrer Macro
'
' Range("A1").Select
Sheets("ARCHIVES").Select
Range("A3").Select
Selection.ListObject.ListRows.Add (1)
Sheets("FORMULAIRE DE SAISIE").Select
Range("B5").Select
Selection.Copy
Sheets("DONNEES").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("FORMULAIRE DE SAISIE").Select
Range("C5").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("ARCHIVES").Select
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("FORMULAIRE DE SAISIE").Select
Range("D5").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("ARCHIVES").Select
Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("FORMULAIRE DE SAISIE").Select
Range("E5").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("ARCHIVES").Select
Range("D3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
de plus, il me semble que les destinations ne correspondent pas aux données macro
exemple :
cellule départ : Range B5 destination A3 pour la valeur date qui se retrouve dans la cellule C3
D5 se retrouve en D3 alors qu'il est écrit destination C3
E5 vers D3 ... c'est bon
par contre impossible de copier la valeur de la cellule C5 destination A3 ...!
oups, je disjoncte
merci pour vos lumières ...
cordialement
Bonjour Bervanel
Et le petit classeur exemple représentatif, ce sont les potentiels répondeurs qui doivent aussi le fournir ?
Hello,
Une proposition avec une version un peu plus lisible du truc et de la compréhension que je peux avoir sans fichier...
Sub Enregistrer()
Dim wsForm As Worksheet
Dim wsArchives As Worksheet
Dim wsDonnees As Worksheet
Dim tbl As ListObject
Dim newRow As ListRow
' Tes différents onglets sous forme de variable
Set wsForm = Sheets("FORMULAIRE DE SAISIE")
Set wsArchives = Sheets("ARCHIVES")
Set wsDonnees = Sheets("DONNEES")
Set tbl = wsArchives.ListObjects(1)
' Nouvelle ligne haut du tableau
Set newRow = tbl.ListRows.Add(1)
' Vers données
wsDonnees.Range("A3").Value = wsForm.Range("C5").Value ' Valeur de C5 vers A3
' Vers archives
With wsArchives
.Range("A3").Value = wsForm.Range("B5").Value
.Range("B3").Value = wsForm.Range("C5").Value
.Range("C3").Value = wsForm.Range("D5").Value
.Range("D3").Value = wsForm.Range("E5").Value
End With
Application.CutCopyMode = False
End Subbonjour Bervanel, Baroute78, mafraise,
à mon avis, on perd trop de temps en déclarant tous ces variables, avec With ...End With", c'est plus facile et lisible
Sub Enregistrer()
Dim c As Range
With Sheets("FORMULAIRE DE SAISIE")
Sheets("DONNEES").Range("A3").Value = .Range("C5").Value ' Valeur de C5 vers A3
Set c = Sheets("ARCHIVES").Range("A2").ListObject.ListRows(1).Add.Range 'les 4 cellules d'une nouvelle "listrow" au début du TS à A2 d'ARCHIVES
c.Resize(, 4).Value = Array(.Range("B5").Value2, , Range("C5").Value2, .Range("D5").Value2, .Range("E5").Value2) 'coller en une fois ces 4 valeurs dans cette plage
End With
End SubBonjour
Désolé pour l'envoi partiel des éléments, ne voulant surcharger.....et merci aux trois experts qui ont souhaité répondre
voila le fichier
je reconnais que cette macro est "lourde" et que des "pros" auront de suite trouver la bonne formule ....
merci pour vos réponses