Macro: probleme programmation colonnes
Fermé
Berrot
Messages postés
7
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
2 janvier 2009
-
17 déc. 2008 à 17:35
Berrot Messages postés 7 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 2 janvier 2009 - 2 janv. 2009 à 10:53
Berrot Messages postés 7 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 2 janvier 2009 - 2 janv. 2009 à 10:53
A voir également:
- Macro: probleme programmation colonnes
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Logiciel macro - Télécharger - Organisation
6 réponses
Utilisateur anonyme
17 déc. 2008 à 19:11
17 déc. 2008 à 19:11
Bonjour,
Suggestion :
Lupin
Suggestion :
Option Explicit ' Private Sub Worksheet_Change(ByVal Target As Range) Dim Plage As Range, Intersection As Range Set Plage = Range("F61:F80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then If Target.Offset(, -2).Value = Empty Then Application.EnableEvents = False MsgBox "il faut saisir l'agence avant le compte !" Target.Value = Empty Target.Offset(, -2).Select Application.EnableEvents = True End If End If ' If Target.Column("F61:F80") And Target.Count = 1 Then ' If Target.Offset(, -2).Value = Empty Then ' Application.EnableEvents = False ' MsgBox "il faut saisir l'agence avant le compte !" ' Target.Value = Empty ' Target.Offset(, -2).Select ' Application.EnableEvents = True ' End If ' End If Set Plage = Range("D61:D80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then Application.EnableEvents = False Target.Offset(, -1).Select Application.EnableEvents = True End If ' If Target.Column("D61:D80") And Target.Count = Empty Then ' Target.Offset(, -1).Select ' End If Set Plage = Range("F61:F80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then If Target.Offset(, -3).Value = Empty Then Application.EnableEvents = False MsgBox "il faut saisir l'agence avant le compte !" Target.Value = Empty Target.Offset(, -3).Select Application.EnableEvents = True End If End If ' If Target.Column("F61:F80") And Target.Count = 1 Then ' If Target.Offset(, -3).Value = Empty Then ' Application.EnableEvents = False ' MsgBox "il faut saisir l'agence avant le compte !" ' Target.Value = Empty ' Target.Offset(, -3).Select ' Application.EnableEvents = True ' End If ' End If Set Plage = Range("C61:C80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then Application.EnableEvents = False Target.Offset(, -1).Select Application.EnableEvents = True End If ' If Target.Column("C61:C80") And Target.Count = Empty Then ' Target.Offset(, -1).Select ' End If End Sub '
Lupin
Utilisateur anonyme
17 déc. 2008 à 22:29
17 déc. 2008 à 22:29
re :
dans un premier temps, essayer avec ceci :
ainsi, dès l'entrée dans cette routine les évènement seront désactiver.
Lupin
dans un premier temps, essayer avec ceci :
Option Explicit ' Private Sub Worksheet_Change(ByVal Target As Range) Dim Plage As Range, Intersection As Range Application.EnableEvents = False Set Plage = Range("F61:F80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then If Target.Offset(0, -2).Value = Empty Then MsgBox "il faut saisir l'agence avant le compte !" Target.Value = Empty Target.Offset(0, -2).Select End If End If Set Plage = Range("D61:D80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then Target.Offset(0, -1).Select End If Set Plage = Range("F61:F80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then If Target.Offset(0, -3).Value = Empty Then MsgBox "il faut saisir l'agence avant le compte !" Target.Value = Empty Target.Offset(0, -3).Select End If End If Set Plage = Range("C61:C80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then Target.Offset(0, -1).Select End If Application.EnableEvents = True End Sub '
ainsi, dès l'entrée dans cette routine les évènement seront désactiver.
Lupin
Berrot
Messages postés
7
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
2 janvier 2009
19 déc. 2008 à 08:25
19 déc. 2008 à 08:25
re:
Bonjour et merci pour votre aide et surtout pr votre patience.
suite :
Lorsque je mets en surbrillance la colonne F clic droit de la souris "effacer le contenu" le problème persiste, la boîte de dialogue du débogage s'affiche "erreur d'exécution 13 incompatibilité de type :"
Je clique débogage
la 7ème ligne apparait surlignée en jaune ( If Target.Offset(0, -2).Value = Empty Then )
Avec cette nouvelle macro lorsque je ferme le débogage la fenêtre ne se réduit plus dans la barre des tâches , mais la macro est désactivée. Je suis obligé de fermer le fichier, de le rouvrir , de recoller la macro puis ça fonctionne une fois et ainsi de suite..
Bonjour et merci pour votre aide et surtout pr votre patience.
suite :
Lorsque je mets en surbrillance la colonne F clic droit de la souris "effacer le contenu" le problème persiste, la boîte de dialogue du débogage s'affiche "erreur d'exécution 13 incompatibilité de type :"
Je clique débogage
la 7ème ligne apparait surlignée en jaune ( If Target.Offset(0, -2).Value = Empty Then )
Avec cette nouvelle macro lorsque je ferme le débogage la fenêtre ne se réduit plus dans la barre des tâches , mais la macro est désactivée. Je suis obligé de fermer le fichier, de le rouvrir , de recoller la macro puis ça fonctionne une fois et ainsi de suite..
Utilisateur anonyme
19 déc. 2008 à 13:22
19 déc. 2008 à 13:22
Re :
de plus le décalage à gauche se fait avec l'instruction :
Target.Offset(0, -1).Select
dans la partie de code :
si tu désire un décalage à droite, il faut inscrire :
Lupin
Private Sub Worksheet_Change(ByVal Target As Range) Dim Plage As Range, Intersection As Range Application.EnableEvents = False Set Plage = Range("F61:F80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then If IsEmpty(Target.Offset(0, -2).Value) Then MsgBox "il faut saisir l'agence avant le compte !" Target.Value = "" Target.Offset(0, -2).Select End If End If Set Plage = Range("D61:D80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then Target.Offset(0, -1).Select End If Set Plage = Range("F61:F80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then If IsEmpty(Target.Offset(0, -3).Value) Then MsgBox "il faut saisir l'agence avant le compte !" Target.Value = "" Target.Offset(0, -3).Select End If End If Set Plage = Range("C61:C80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then Target.Offset(0, -1).Select End If Application.EnableEvents = True End Sub '
de plus le décalage à gauche se fait avec l'instruction :
Target.Offset(0, -1).Select
dans la partie de code :
Set Plage = Range("C61:C80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then Target.Offset(0, -1).Select End If
si tu désire un décalage à droite, il faut inscrire :
Set Plage = Range("C61:C80") Set Intersection = Application.Intersect(Plage, Target) If Not Intersection Is Nothing Then Target.Offset(0, 1).Select End If
Lupin
Berrot
Messages postés
7
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
2 janvier 2009
20 déc. 2008 à 10:23
20 déc. 2008 à 10:23
Bonsoir Lupin
Super ça fonctionne très bien !
J'ai corrigé le décalage vers la gauche.
Encore merci pour tout.
Je te souhaite de bonnes fêtes de fin d'année.
BERROT.
PS.
Peut-ëtre aurai-je encore besoin de tes services !
Je ne sais pas comment mettre ta réponse en ligne ou sur le forum pour que ça puisse rendre service à d'autres.
Super ça fonctionne très bien !
J'ai corrigé le décalage vers la gauche.
Encore merci pour tout.
Je te souhaite de bonnes fêtes de fin d'année.
BERROT.
PS.
Peut-ëtre aurai-je encore besoin de tes services !
Je ne sais pas comment mettre ta réponse en ligne ou sur le forum pour que ça puisse rendre service à d'autres.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
20 déc. 2008 à 15:14
20 déc. 2008 à 15:14
re :
Excellent, ce fut un plaisirs à partager :-)
Passer de joyeuses fêtes.
Michel
Lupin
Excellent, ce fut un plaisirs à partager :-)
Passer de joyeuses fêtes.
Michel
Lupin
Berrot
Messages postés
7
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
2 janvier 2009
2 janv. 2009 à 10:53
2 janv. 2009 à 10:53
Bonjour Michel (Lupin)
C'est Berrot (Robert) ce petit message pour te souhaiter une tres bonne et heureuse année 2009.
A+
Robert
C'est Berrot (Robert) ce petit message pour te souhaiter une tres bonne et heureuse année 2009.
A+
Robert
17 déc. 2008 à 19:47
merci beaucoup de vous être interessé à mon problème .
je vais essayer cette macro
et je vous tiendrais informé
merci encore.
17 déc. 2008 à 20:56
c'est exactement ce que je voulais.
Cependant il y a quelques petits problèmes qui surviennent à l'exécution de la macro:
1° lorsque je saisis la colonne C la sélection se décale d'une cellule vers la gauche (colonne B qui ne devrait pas être selectionnée) au lieu de se déplacer vers la droite en colonne D ou F si D est renseignée.
2° lorsque je mets en surbrillance les colonnes C ou D et clique droit de la souris "effacer le contenu" tout s'efface mais la surbrillance se décale vers la gauche en colonne C ou B.
3° lorsque je mets en surbrillance la colonne F clique droit de la souris " efacer le contenu" un message d'erreur du débogage s'affiche "erreur d'exécution 13 incompatibilité du type :"
Je clique débogage :
la 6eme ligne de la macro est surlignée en jaune "If Target.Offset(, -2).Value = Empty Then"
lorsque je ferme le débogage, la feuille se réduit dans la barre des tâches.
Excusez moi de vous poser ces quelques problèmes
et encore merci.