Erreur copier coller

Bonjour,

J'ai un code pour copier des valeur de cellules précise vers une autre feuille mais je bloque directemant a la ligne suivante qui est en gras. je n'arrive pas a comprendre ce qui peut clocher.

Quelqu'un peut m'aider?

Option Explicit

Public Const FC = "CALCULS"

Public Const PClient = "C5"

Public Const PContact = "F5"

Public Const DesProjet = "C8"

Public Const NoProjet = "F8"

Public Const TypePrix = "C11"

Public Const Coutant = "E24"

Public Const Vendant = "H24"

Public Const NoteProjet = "I5"

Public Const FH = "HISTORIQUES"

Public Const HPClient = "C"

Public Const HPContact = "E"

Public Const HDesProjet = "G"

Public Const HNoProjet = "I"

Public Const HTypePrix = "J"

Public Const HCoutant = "K"

Public Const HVendant = "L"

Public Const HNoteProjet = "M"

Public Const lideb = 5

Public Sub Histo()

Dim PClient As String, PContact As String, DesProjet As String, NoProjet As String, TypePrix As String, Coutant As String, Vendant As String, NoteProjet As String, liFH As Long

With Sheets(FC)

PClient = .Range(HPClient).Cells(1, 1).Value

PContact = .Range(HPContact).Cells(1, 1).Value

DesProjet = .Range(HDesProjet).Cells(1, 1).Value

NoProjet = .Range(HNoProjet).Cells(1, 1).Value

TypePrix = .Range(HTypePrix).Cells(1, 1).Value

Coutant = .Range(HCoutant).Cells(1, 1).Value

Vendant = .Range(HVendant).Cells(1, 1).Value

NoteProjet = .Range(HNoteProjet).Cells(1, 1).Value

End With

With Sheets(FH)

liFH = .Range(HPClient & Rows.Count).End(xlUp).Row + 1

If liFH <= lideb Then liFH = lideb + 1

.Range(HPClient & liFH).Value = PClient

.Range(HPContact & liFH).Value = PContact

.Range(HDesProjet & liFH).Value = DesProjet

.Range(HNoProjet & liFH).Value = NoProjet

.Range(HTypePrix & liFH).Value = TypePrix

.Range(HCoutant & liFH).Value = Coutant

.Range(HVendant & liFH).Value = Vendant

.Range(HNoteProjet & liFH).Value = NoteProjet

End With

End Sub

Bonjour,

à tester,

PClient = .Range(HPClient & ":" & HPClient).Cells(1, 1).Value

Bonjour à tous,

une autre façon:

PClient = .Range(HPClient & 1).Value

à noter que PClient est déclaré comme constante public dans un module(?) et redéclaré As String dans la Sub Histo()

C'est vrai pour d'autres variables.

A+

les deux solution ne change rien ;(

poster votre classeur

A+

les déclarations public doivent être dans un module standard en haut de ce module et non dans une sub.

Les constantes ne peuvent être utilisées pour y stocker des variables.

Soit les constantes ne servent à rien et vous pouvez les supprimer.

Soit vous avez besoin de variables globales à l'ensemble du projets pour y stocker des valeurs à ce moment vous déclarez des variables public

soit vous n'avez besoin de ces variables que dans la sub Histo(), vous déclarez ces variables dans la sub (dim au lieu de public)

par ailleurs

PClient = .Range(HPClient).Cells(1, 1).Value 

est a priori censé retourner la première ligne de la colonne, donc la proposition de i20100 et la mienne ramène bien C1 (pour la colonne C) . Mais dans la feuille CALCULS, C1 est vide.

A+

Bonjour à tous,

Un essai ...

Modifier pour ceci : Public Const lideb = 4

Sub Histo()
Dim LiFH As Integer

   With Sheets(FH)
      LiFH = .Range(HPClient & Rows.Count).End(xlUp).Row + 1
      If LiFH <= lideb Then LiFH = lideb + 1
      .Range(HPClient & LiFH).Value = Sheets(FC).Range(PClient).Value
      .Range(HPContact & LiFH).Value = Sheets(FC).Range(PContact).Value
      .Range(HDesProjet & LiFH).Value = Sheets(FC).Range(DesProjet).Value
      .Range(HNoProjet & LiFH).Value = Sheets(FC).Range(NoProjet).Value
      .Range(HTypePrix & LiFH).Value = Sheets(FC).Range(TypePrix).Value
      .Range(HCoutant & LiFH).Value = Sheets(FC).Range(Coutant).Value
      .Range(HVendant & LiFH).Value = Sheets(FC).Range(Vendant).Value
      .Range(HNoteProjet & LiFH).Value = Sheets(FC).Range(NoteProjet).Value
      ' etc ...
   End With
End Sub

ric

Merci ric ca fonctione #1

ric

Rechercher des sujets similaires à "erreur copier coller"