erreur d exécution 70

  • Initiateur de la discussion Initiateur de la discussion snoopy07
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

snoopy07

XLDnaute Occasionnel
Bonsoir le forum

j ai le code erreur d' execution 70 qui s affiche quand je veux ouvrir mon userfrom et quand je clic sur deblocage
ca m affiche FrmModification surlignée en jaune
voir capture d imaque ci joint

j aurais besoin de vos conseils et de vos explication pour resoudre mon probleme

dans l attente d une reponse je vous souhaite une bonne soirée

Cordialement
Snoopy 07
 

Pièces jointes

Re : erreur d exécution 70

Bonsoir snoopy

Ce n'est pas le formulaire qui cause problème, mais les macros qui sont incorporées.

Les variables sont mal définies: f par exemple. C'est Dim f As Worksheet ou Public f As Worksheet, c As Range

Set f = Sheets("janvier") quoi que pas indispensable

For Each c In Range(f.[B6], f.[B65000].End(xlUp))

With Sheets("janvier")
For each c in .Range("b6:b" & .Range("b65000").End(xlUp))
.....
Next c
End with

Je te laisse le soin de bien regarder le reste et y apporter les corrections.
 
Re : erreur d exécution 70

Bonjour,

FrmModification ... TxtRecherche ... dans sa propriété ... RowSource , tu as inscrit "Jours".

Essaie en enlevant "Jours".

Ensuite, il restera les autres TxtBox à renommer selon ton code ...


Jecherche
 
Re : erreur d exécution 70

Bonsoir Jecherche

Il faut aussi remplacer TxtRecherche par CmbRecherche vu que c'est une Combobox.

Code:
Option Explicit
Dim ligne As Long, f As Worksheet, c As Range

Private Sub UserForm_Initialize()
     Dim i As Integer

    With Sheets("janvier")
    For i = 6 To .Range("b65536").End(xlUp).Row
        CmbRecherche.AddItem .Range("b" & i)
    Next i
    End With
End Sub

Private Sub UserForm_Activate()
CmbRecherche = ""
End Sub

Private Sub CmbRecherche_Click()

    ligne = Me.CmbRecherche.ListIndex + 6
     Set f = Sheets("janvier")
With f
   Me.TxtJours = .Cells(ligne, 2)
   Me.TxtCatégorie = .Cells(ligne, 3)
   Me.TxtEtablissement = .Cells(ligne, 4)
   Me.TxtQuiQuoi = .Cells(ligne, 5)
   Me.TxtType = .Cells(ligne, 6)
   Me.TxtNChèque = .Cells(ligne, 7)
   Me.TxtCrédit = .Cells(ligne, 8)
   Me.TxtDébit = .Cells(ligne, 9)
End With
End Sub

Private Sub CmdAjouter4_Click()

Set f = Sheets("janvier")
ligne = f.Range("b65536").End(xlUp)(2)

  '--- Transfert Formulaire dans Feuille active
With f
   .Cells(ligne, 2) = Me.TxtJours
   .Cells(ligne, 3) = Me.TxtCatégorie
   .Cells(ligne, 4) = Me.TxtEtablissement
   .Cells(ligne, 5) = Me.TxtQuiQuoi
   .Cells(ligne, 6) = Me.TxtNChèque
   .Cells(ligne, 7) = Me.TxtCrédit
   .Cells(ligne, 8) = Me.TxtDébit 
End With
End Sub

Private Sub CmdFermer4_Click()
    
    Unload Me ' le ferme
    'Sélection de la cellule A1
       Sheets("janvier").Range("A1").Activate
    Call Mise_en_couleur
    'on remet la protection de la feuille
    ActiveSheet.Protect
End Sub
 
Dernière édition:
Re : erreur d exécution 70

re lone-wolf ,jecherche

merci pour la modification

je viens de faire la modifie et maintemant ca bloque qund je clic sur modifier

j ai erreur d execution 1004 qui s affiche voir capture d image ci joint

cordialement

Snoopy 07
 

Pièces jointes

Re : erreur d exécution 70

Bonjour,

La variable ligne = 0 car il y a un problème ici : ligne = f.Range("b65536").End(xlUp)(2)

Je ne connais pas cette façon de coder. Je ne comprends pas " (2) " à la fin

Quel est le but ? Est-ce de trouver la première ligne vide à la fin du tableau ? ... sans utilier " .row " ??


Jecherche
 
Re : erreur d exécution 70

Bonjour Jecherche, Snoopy

@Jecherche: elle ne va pas trouver, mais inscrire les données dans la première ligne vide du tableau.

@Snoopy: il faut changer la ligne par celle-ci: ligne = f.Range("b65536").End(xlUp).Row + 1
Et encore une chose: modifier et ajouter ce n'est pas la même chose, tu devrait le savoir. Si c'est pour ajouter des données le code est correct. Mais, vu que c'est un formulaire de modification, le code doit être écrit autrement; c'est à dire

Code:
Private Sub CmdModifier_Click()
Dim cel As Range
' on enlève la protection de la feuille
    ActiveSheet.Unprotect
  '--- Transfert Formulaire dans Feuille active
With Sheets("janvier").Range("b6:i65536")
Set cel = .Find(CmbRecherche, , xlValues)
If Not cel Is Nothing Then
 cel.Offset(0, 0) = Me.TxtJours
 cel.Offset(0, 1) = Me.TxtCatégorie
 cel.Offset(0, 2) = Me.TxtEtablissement
 cel.Offset(0, 3) = Me.TxtQuiQuoi
 cel.Offset(0, 4) = Me.TxtType
 cel.Offset(0, 5) = Me.TxtNChèque
 cel.Offset(0, 6) = Me.TxtCrédit
 cel.Offset(0, 7) = Me.TxtDébit
 End If
End With
End Sub
 
Dernière édition:
Re : erreur d exécution 70

Bonjour Lone-wolf

merci pour ce code mais j ai un souci quand je clic sur modifier sur ma ligne 6 ca me met rempli mon tableau a partir de la cellule G6
et quand je fais une modification sur ma ligne 7 ca marche mais ca me garde pas le format de ma cellule

cest a dire que jours est affiche 07 et quand je modifie sa m affiche 7

et ma chaine de calcul ne se fait plus

voir ls capture d image ci joint

Cordialement
Snoopy 07
 

Pièces jointes

Re : erreur d exécution 70

Bonjour,

Dans la macro : CmdModifier_click ... il y avait une recherche ... étant données que l'info n'était pas unique, ce n'était pas la bonne approche ... le résultat donnait la première occurrence trouvée.

Je suggère :
Code:
Private Sub CmdModifier_Click()
Dim cel As Range
' on enlève la protection de la feuille
   ActiveSheet.Unprotect
  '--- Transfert Formulaire dans Feuille active
With Sheets("janvier")
Set cel = Range("b" & ligne)  'ici on trouve la bonne ligne du tableau
If Not cel Is Nothing Then
  cel.Offset(0, 0) = Format(Me.TxtJours, "00")
  cel.Offset(0, 1) = Me.TxtCatégorie
  cel.Offset(0, 2) = Me.TxtEtablissement
  cel.Offset(0, 3) = Me.TxtQuiQuoi
  cel.Offset(0, 4) = Me.TxtType
  cel.Offset(0, 5) = Me.TxtNChèque
  If Me.TxtCrédit = "" Then cel.Offset(0, 6) = 0       '   modif ici
  If cel.Offset(0, 6) = 0 Then cel.Offset(0, 6) = ""    '   et ici
  cel.Offset(0, 7) = Me.TxtDébit
End If
End With
End Sub

Ainsi, même si en colonne B il y a plusieurs "Jours" identiques, on se base sur "ListIndex" de "CmbRecherche" et ça fonctionne beaucoup mieux.

Espérant le tout conforme...


Jecherche
 
Dernière modification par un modérateur:
Re : erreur d exécution 70

Bonjour jecherche

merci pour votre aide je viens de modifier mon code et sa marche bien pour la modification
mais j ai un autre souci maintenant

j ai #valeur! qui s'affiche au lieu du resultat de mon opération qui est:

=SI(B6="";"";SI(ESTNUM(INDIRECT("J"&LIGNE()-1));INDIRECT("J"&LIGNE()-1)+INDIRECT("H"&LIGNE())-INDIRECT("I"&LIGNE());Solde_Réel))

merci de me dire pourquoi j ai cette erreur et de m expliquer comme la resoudre

cordialement

Snoopy 07
 

Pièces jointes

  • Avant modif.jpg
    Avant modif.jpg
    31.5 KB · Affichages: 25
  • modif.PNG
    modif.PNG
    16.7 KB · Affichages: 16
  • valeur.jpg
    valeur.jpg
    50.8 KB · Affichages: 23
  • Avant modif.jpg
    Avant modif.jpg
    31.5 KB · Affichages: 30
  • valeur.jpg
    valeur.jpg
    50.8 KB · Affichages: 22
  • essai 22 nouvelle feuille.xlsm
    essai 22 nouvelle feuille.xlsm
    102.5 KB · Affichages: 13
Re : erreur d exécution 70

Bonjour,

Cela ne provient pas de la programmation Vba, mais de la formule. Car, ajoute 0 dans le crédit de cette ligne ... puis enlève le 0 dans crédit.

La formule aurait besoin de gérer cela ... je ne suis vraiment pas bon en formule ...


Jecherche
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour