Déclaration Variable
Bonjour,
J'ai un problème sur la "Sub" suivante . Je dois déclarer la variable mais je n'y arrive pas.
Le message suivant apparait :
---------------------------
Erreur de compilation:
La variable de contrôle For Each doit être de type Variant ou Object
Cette Sub fonctionnait sans problème avant. J'ai juste modifier le tableau Excel.
Sub Archivage_pdf_NDF()
'
' Archivage_pdf_NDF Macro
'---------------------------
Dim Description As String
Description Range("E11:E17")
For Each Description In Sheets("Note_de_frais").Range("E11:E17")
'si cellule vide = Ne rien faire
If Description.Value = "" Then
'si cellule remplie = archiver la ligne
Else
' Ligne_origine = Item.Row ==> reclacul N° lIgne
Ligne = Sheets("Historique_NDF").Range("A2").End(xlDown).Row + 1
' Données à Archiver
Sheets("Historique_NDF").Range("A" & Ligne).Value = Sheets("Note_de_frais").Range("L1:M1").Value 'N° Note de Frais
Sheets("Historique_NDF").Range("B" & Ligne).Value = Sheets("Note_de_frais").Range("C3").Value 'Créateur
Sheets("Historique_NDF").Range("C" & Ligne).Value = Sheets("Note_de_frais").Range("G7:H7").Value 'Date demande NDF
Sheets("Historique_NDF").Range("D" & Ligne).Value = Sheets("Note_de_frais").Range("D3").Value 'Trigrame User
Sheets("Historique_NDF").Range("E" & Ligne).Value = Sheets("Note_de_frais").Range("C5").Value 'Service
Sheets("Historique_NDF").Range("F" & Ligne).Value = Sheets("Note_de_frais").Range("C7").Value 'Période Facturation
Sheets("Historique_NDF").Range("G" & Ligne).Value = Sheets("Note_de_frais").Range("G3:H3").Value 'Valideur
Sheets("Historique_NDF").Range("H" & Ligne).Value = Sheets("Note_de_frais").Range("B11").Value 'Date Frais/Dépenses
Sheets("Historique_NDF").Range("I" & Ligne).Value = Sheets("Note_de_frais").Range("C11").Value 'Motif Frais/Dépenses
Sheets("Historique_NDF").Range("J" & Ligne).Value = Sheets("Note_de_frais").Range("D11").Value 'Lieu depalcement
Sheets("Historique_NDF").Range("K" & Ligne).Value = Sheets("Note_de_frais").Range("E11").Value 'Designation des Frais
Sheets("Historique_NDF").Range("L" & Ligne).Value = Sheets("Note_de_frais").Range("F11").Value 'Montant Frais de transport
Sheets("Historique_NDF").Range("M" & Ligne).Value = Sheets("Note_de_frais").Range("G11").Value 'Nb de Repas
Sheets("Historique_NDF").Range("N" & Ligne).Value = Sheets("Note_de_frais").Range("H11").Value 'Tarif du Repas
Sheets("Historique_NDF").Range("O" & Ligne).Value = Sheets("Note_de_frais").Range("I11").Value 'Kilometrage
Sheets("Historique_NDF").Range("P" & Ligne).Value = Sheets("Note_de_frais").Range("J11").Value 'Montant Idem Kilo
Sheets("Historique_NDF").Range("Q" & Ligne).Value = Sheets("Note_de_frais").Range("K11").Value 'Montant Carburant
Sheets("Historique_NDF").Range("R" & Ligne).Value = Sheets("Note_de_frais").Range("L11").Value 'Montant Divers
Sheets("Historique_NDF").Range("S" & Ligne).Value = Sheets("Note_de_frais").Range("M11").Value 'Total Ligne
Sheets("Historique_NDF").Range("T" & Ligne).Value = Sheets("Note_de_frais").Range("N11").Value 'Compte
Sheets("Historique_NDF").Range("U" & Ligne).Value = Sheets("Note_de_frais").Range("N11").Value 'Signataire de la demande
Sheets("Historique_NDF").Range("V" & Ligne).Value = Sheets("Note_de_frais").Range("N11").Value 'Signataire de la validation (n+1)
End If
Next Description
'Rétinitialisation de la Grille "Note_de_frais"
Sheets("Note_de_frais").Value = NumNDF(Sheets("Note_de_frais").Range("L1").Value, Sheets("Note_de_frais").Range("A2").Value)
Sheets("Note_de_frais").Range("C3:C7").ClearContents
Sheets("Note_de_frais").Range("G3:H7").ClearContents
Sheets("Note_de_frais").Range("M3").ClearContents
Sheets("Note_de_frais").Range("B11:H14").ClearContents
Sheets("Note_de_frais").Range("K11:L14").ClearContents
Sheets("Note_de_frais").Range("C24").ClearContents
Sheets("Note_de_frais").Range("L24").ClearContentsMerci pour votre aide
bonjour popeye56530,
Dim Description As range
Description Range("E11:E17")
Bonjour,
En dehors de la remarque de BsALv, vous aurez aussi un souci avec NumDF à la fin du code... Cela correspond à quoi ?
Sinon je vois aussi ceci à modifier
If Description.Value = "" Then
'si cellule remplie = archiver la ligne
ElseLe Else ne sert à rien. Remplacez par ceci
If Description.Value <> vbnullstring Then 'si cellule est remplie = archiver la ligneNB : Vous pourriez aussi utiliser le WIth .... end With, pour éviter de répéter Sheets("Historique_NDF") à chaque ligne. Cela allégerait un peu la lecture
si ok pensez à
Cordialement
Merci de la reponse.
J ai créer une fonction afin de calculer un numéro automatique de document.
Re
Ok. Si votre demande est terminée, pensez à
Crdlt
re,
on ne voit pas sur quelle ligne la macro s'arrête, c'est laquelle ?
La macro bloque sur Ligne = Sheets("Historique_NDF").Range("A2").End(xlDown).Row + 1.
J'ai essayé de définir une variable maas il y a un blocage sur la ligne For Each Description In Sheets("Note_de_frais")
La macro bloque sur Ligne = Sheets("Historique_NDF").Range("A2").End(xlDown).Row + 1.
Normal vous n'avez pas déclaré votre variable Ligne....
Votre code comme ceci :
Option Explicit
Sub Archivage_pdf_NDF() ' Archivage_pdf_NDF Macro
Dim Description As Range
Dim ligne As Integer
For Each Description In Sheets("Note_de_frais").Range("E11:E17")
If Description.Value <> vbNullString Then 'si cellule remplie = archiver la ligne
With Sheets("Historique_NDF")
ligne = .Range("A2").End(xlDown).Row + 1 ' Ligne_origine = Item.Row ==> reclacul N° lIgne
' Données à Archiver
.Range("A" & ligne).Value = Sheets("Note_de_frais").Range("L1:M1").Value 'N° Note de Frais
.Range("B" & ligne).Value = Sheets("Note_de_frais").Range("C3").Value 'Créateur
.Range("C" & ligne).Value = Sheets("Note_de_frais").Range("G7:H7").Value 'Date demande NDF
.Range("D" & ligne).Value = Sheets("Note_de_frais").Range("D3").Value 'Trigrame User
.Range("E" & ligne).Value = Sheets("Note_de_frais").Range("C5").Value 'Service
.Range("F" & ligne).Value = Sheets("Note_de_frais").Range("C7").Value 'Période Facturation
.Range("G" & ligne).Value = Sheets("Note_de_frais").Range("G3:H3").Value 'Valideur
.Range("H" & ligne).Value = Sheets("Note_de_frais").Range("B11").Value 'Date Frais/Dépenses
.Range("I" & ligne).Value = Sheets("Note_de_frais").Range("C11").Value 'Motif Frais/Dépenses
.Range("J" & ligne).Value = Sheets("Note_de_frais").Range("D11").Value 'Lieu depalcement
.Range("K" & ligne).Value = Sheets("Note_de_frais").Range("E11").Value 'Designation des Frais
.Range("L" & ligne).Value = Sheets("Note_de_frais").Range("F11").Value 'Montant Frais de transport
.Range("M" & ligne).Value = Sheets("Note_de_frais").Range("G11").Value 'Nb de Repas
.Range("N" & ligne).Value = Sheets("Note_de_frais").Range("H11").Value 'Tarif du Repas
.Range("O" & ligne).Value = Sheets("Note_de_frais").Range("I11").Value 'Kilometrage
.Range("P" & ligne).Value = Sheets("Note_de_frais").Range("J11").Value 'Montant Idem Kilo
.Range("Q" & ligne).Value = Sheets("Note_de_frais").Range("K11").Value 'Montant Carburant
.Range("R" & ligne).Value = Sheets("Note_de_frais").Range("L11").Value 'Montant Divers
.Range("S" & ligne).Value = Sheets("Note_de_frais").Range("M11").Value 'Total Ligne
.Range("T" & ligne).Value = Sheets("Note_de_frais").Range("N11").Value 'Compte
.Range("U" & ligne).Value = Sheets("Note_de_frais").Range("N11").Value 'Signataire de la demande
.Range("V" & ligne).Value = Sheets("Note_de_frais").Range("N11").Value 'Signataire de la validation (n+1)
End With
End If
Next Description
'Rétinitialisation de la Grille "Note_de_frais"
With Sheets("Note_de_frais")
.Value = NumNDF(.Range("L1").Value, .Range("A2").Value)
.Range("C3:C7").ClearContents
.Range("G3:H7").ClearContents
.Range("M3").ClearContents
.Range("B11:H14").ClearContents
.Range("K11:L14").ClearContents
.Range("C24").ClearContents
.Range("L24").ClearContents
End With
End SubCordialement
