réaction en chaine de problème de macro ?...

Darnel

XLDnaute Impliqué
Bonjour à tous


je pensais avoir résolu mon problème avec l'aide de Charly2 que je remercie à nouveau, mais j'ai la sensation bizare que si je parvien à regler ce probleme, un autre va encore me tomber sur le bout du nez !
je m'explique :
j'ai une feuille de saisie et une base de données.
je rempli la fiche de saisie, clic sur bouton 'valider' et ca enregistre tout dans une base de donnée (protégée grace a charly (cf file : Lien supprimé
)
avant tout etait opérationnel, mais j'ai tenter de mettre des bouton flottant (cf file : Lien supprimé )
Charly s'est rendu compte que sur excel 97 , les boutons commandes peuvent pose des problèmes si on ne fait pas une petite manip. en effet, les macro de protection de feuille ne passaient pas. ce problème réglé, je me rend compte maintenant que ma macro de validation passe plus non plus et s'arrete sur une ligne de code : voici tout le code, ne vous perdez pas car y a plusieurs feuilles et de lignes de code, normalement ca reste simple.
voici le code et ce qui déconne en jaune

Code:
Sub Valide_saisie()

' Valide_saisie Macro

'Contrôle des champs de saisie obligatoires

If IsEmpty(Range('B4')) Then

    MsgBox 'Numéro de police manquant'
    Exit Sub
    
End If

If IsEmpty(Range('E3')) Then

    MsgBox 'ETAT MANQUANT'
    Exit Sub
    
End If

If IsEmpty(Range('B5')) Then

    MsgBox 'Nom client manquant'
    Exit Sub
    
End If

If IsEmpty(Range('B7')) Then

    MsgBox 'Nom courtier manquant'
    Exit Sub
    
End If

If IsEmpty(Range('B9')) Then

    MsgBox 'Type de Garantie manquant'
    Exit Sub
    
End If

If IsEmpty(Range('B10')) Then

    MsgBox 'Matériel assuré manquant'
    Exit Sub
    
End If

If IsEmpty(Range('B27')) Then

    MsgBox 'Prime TTC Pa025 manquante'
    Exit Sub
    
End If

If Range('E20').Value = 'Date d'effet' Then

    If IsEmpty(Range('F20')) Then

        MsgBox 'Date d'effet manquante'
        Exit Sub
    End If

Else

    If IsEmpty(Range('F20')) Then
    
        MsgBox 'Date de début des travaux manquante'
        Exit Sub
    End If

End If

If Range('E21').Value = 'Date prévis°lle réception' Then

    If IsEmpty(Range('F21')) Then

        MsgBox 'Date prévisionnelle de reception des travaux manquante'
        Exit Sub

    End If

End If

If Range('A20').Value = 'Echéance' Then

    If IsEmpty(Range('B20')) Then

        MsgBox 'Echéance manquante'
        Exit Sub
    End If

End If

If IsEmpty(Range('B2')) Then

    MsgBox 'Date de création manquante'
    Exit Sub
    
End If

If IsEmpty(Range('B39')) Then

    MsgBox 'Résumé Garanties manquant'
    Exit Sub
    
End If

If Range('A21').Value = 'Préavis' Then

    If IsEmpty(Range('B21')) Then

        MsgBox 'Préavis manquant'
        Exit Sub
    End If
End If


'orientation base de données fonction Résils ou non


If Range('E3').Value = 'EN COURS' Then


'Enregistrement de la fiche dans la base (feuille Données)

  
    Application.ScreenUpdating = False
    
   
'On copie les données qui viennent d'être saisies (feuille Stock)
'vers la feuille Données.
'L'enregistrement est ajouté à la fin de la feuille Données

Sheets('Données').Select
ActiveSheet.Unprotect
Sheets('Stock').Select
Range('A2:BU2').Select
Selection.Copy
Sheets('Données').Select

If Range('b3').Value = '' Then
    
    Range('B2').Select
    ActiveCell.Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone

    
Else
        
    Range('B2').Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone
    
    
End If
   
Range('a1').Select

'On efface les éléments saisis dans la feuille Fiche saisie

clear_text

Else

'Enregistrement de la fiche dans la base données résils


    Application.ScreenUpdating = False


'On copie les données qui viennent d'être saisies (feuille Stock)
'vers la feuille Données résils.
'L'enregistrement est ajouté à la fin de la feuille Données résils

Sheets('Données résils').Select
ActiveSheet.Unprotect
Sheets('Stock').Select
Range('A2:BU2').Select
Selection.Copy
Sheets('Données résils').Select

If Range('b3').Value = '' Then
    
    Range('B2').Select
    ActiveCell.Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone

    
Else
        
    Range('B2').Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone
    
    
End If
   
Range('a1').Select

'On efface les éléments saisis dans la feuille Fiche saisie

clear_text

End If

End Sub

je tiens à préciser que ce code est activé par un bouton Formulaire et non commande.
je pense que ca risque de continuer à me souler un moment.
si quelqu'un a une idée je suis preneur.
merci à vous tous pour tout ce que vous faites et pour l'interet que vous portez à tous nos petits problèmes

Message édité par: darnel, à: 16/03/2006 10:52

Arf j'arrive pas à le mettre en jaune
bon c'est une des lignes suivante :

Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone

de totue facon, vu que c'est une conditionnelle, je pense que ca bug pareil avec n'importe laquelle de ces lignes pastspecial.

merci

Message édité par: darnel, à: 16/03/2006 10:56

Message édité par: darnel, à: 16/03/2006 11:00

Message édité par: darnel, à: 16/03/2006 14:18
 

Discussions similaires

Réponses
4
Affichages
418
Réponses
6
Affichages
361

Statistiques des forums

Discussions
314 634
Messages
2 111 445
Membres
111 139
dernier inscrit
Double-V