Problème Macro VBA

samimi94

XLDnaute Occasionnel
Problème Macro VBA (RESOLU - Merci beaucoup)

Bonjour à tous,

Cela fait peu de temps que je me suis mise aux macros, et j'ai beaucoup appris grâce au site et à toutes vos remarques et solutions.
Aujourd'hui je vous écrit car je bute sur ma macro et j'ai eu beau chercher je ne trouve pas la réponse.

Je vous expose mon problème.

Dans un fichier Excel, les utilisateurs doivent obligatoirement 'sur une même ligne'mettre un P dans la colonne "D" dès lors qu'ils ont saisi quelquechose dans la colonne B. Malheureusement ils oublient toujours de le faire ce qui est embarassant, par conséquent je souhaiterai l'automatiser (facile à dire pour ma part).

Je parviens à le faire sur toute la colonne quand je mets
Columns("D").Value = "P" mais malheureusement ca me met la lettre sur toutes les cellules de la colonne D même quand la colonne A n'est pas renseignée.

Autre problème toujours dans le même fichier, les utilisateurs doivent également renseigner la colonne E mais le contenu est libre, or je souhaiterai mettre la lettre A dans les cellules de la colonne E si les utilisateurs l'ont laissé vide car elle ne doit pas le rester et toujours si la cellule B contient du texte.

Je ne sais pas si mon premier post est clair, mais j'espère vivement que quelqu'un pourra m'aider car sur les autres forums j'ai trouvé des choses mais qui font toujours références à des fonctions, or dans mon cas, je ne veux pas faire du calcul, juste mettre du texte sous certaines conditions.

D'avance, merci, d'avoir déjà pris le temps de lire ce post jusqu'au bout :)

Bonne journée ou soirée
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Problème Macro VBA

Bonsoir, et bienvenue sur le forum

Avec ce code, dès que tes collègues saisissent quelque chose en colonne B, La colonne D prend la valeur "P", et la colonne E prend la valeur "A"
Rien ne les empêche de modifier la colonne E ensuite

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 2 And Target.Count = 1 Then
    Cells(Target.Row, 4).Value = IIf(Target <> "", "P", "")
    Cells(Target.Row, 5).Value = IIf(Target <> "", "A", "")
End If
Application.EnableEvents = True
End Sub
 
Dernière édition:

samimi94

XLDnaute Occasionnel
Re : Problème Macro VBA

Bonoir,

Avant toute chose merci beaucoup pour votre accueil.

Je vais tester vos deux propositions de ce pas et vous tiendrez informé du résultat que j'obtiens.

En attendant je vous souhaite une excellent soirée.
 

samimi94

XLDnaute Occasionnel
Re : Problème Macro VBA

Re-bonsoir,

Je viens de tester vos deux propositions, mais il ne se passe rien aussi bien dans ma macro de base que dans un nouveau classeur !

Auriez-vous une idée de ce que je ne fais pas bien ?

D'avance, merci.
 

samimi94

XLDnaute Occasionnel
Re : Problème Macro VBA

Bonsoir Arnaud,

Je l'ai bien mis dans l'évenement de feuille et en effet du coup ca fonctionne beaucoup mieux Thank's:) t'es un As.

Si je peux abuser une dernière fois, je viens de faire le teste et en effet quand je saisi j'obtiens le résultat escompté, par contre quand je fais un copier - coller pour renseigner ma colonne B là ce n'est plus pris en compte sauf si je double clique sur la cellule.

Y a-t-il un moyen pour qu'il détecte que l'info est présente dans ma cellule B même ) partir d'un copié-collé ?

Merci encore.
 

Cousinhub

XLDnaute Barbatruc
Re : Problème Macro VBA

Re-,
je suppose que tu veux dire (si je fais un copier/coller de PLUSIEURS cellules dans la colonne B)
car un copier/coller d'une cellule fonctionne

essaie avec :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 2 And Target.Count = 1 Then
    Cells(Target.Row, 4).Value = IIf(Target <> "", "P", "")
    Cells(Target.Row, 5).Value = IIf(Target <> "", "A", "")
End If
If Target.Column < 4 And Target.Count > 1 Then
    For Each cel In Selection
        If cel.Column = 2 Then
            Cells(cel.Row, 4).Value = IIf(cel <> "", "P", "")
            Cells(cel.Row, 5).Value = IIf(cel <> "", "A", "")
        End If
    Next cel
End If
Application.EnableEvents = True
End Sub
 

samimi94

XLDnaute Occasionnel
Re : Problème Macro VBA (Résolu)

Bhbh,

Je ne sais vraiment pas trop comment te remercier, car là tu me retires une épine du pied en quelques minutes alors que ca fait des jours que j'effectue des recherches sur le web pour en arriver à ce résultat.

En effet je parlais de copier-coller dans la colonne, la prochaine fois je m'exprimerai plus clairement.

Merci beaucoup et bonne soirée.
PS : J'ai mis résolu dans l'objet je ne sais pas si c'est comme cela qu'on clôture un post :confused:
 

Discussions similaires

Réponses
8
Affichages
442

Statistiques des forums

Discussions
312 672
Messages
2 090 773
Membres
104 662
dernier inscrit
Hurve