Résolu Je "galère de ouf" sur un If aidez-moi svp

outilsetprocess

Expert
Bonjour à tous, je connais pas très bien la programmation sur Excel, les VBA mais j'essaye de réussir en faisant mes recherches et en apprenant mais la je bloque sur une ligne si vous pouviez m'aider svp

En fait je vais vous écrire littéralement ce que je compte faire. J'ai dans la colonne "O" à chaque ligne une liste avec "A Realiser" et "Fait" (concernant des dossiers), et j'aimerais voir dans la colonne Q le nom de l'utilisateur qui change "A Realiser par" Fait" et ce ligne, par ligne

Donc le code que je voudrais faire donnerait littéralement ça :

Si dans la colonne O pour la ligne en question apparaît la chaine de caractère "Fait" Alors
Ecrire dans la ligne correspondante de la colonne Q le nom de l'utilisateur qui a réalisé cette modification
Fin Si

Alors voila ce que j'ai pour l'instant :

Sub Usernameincell()
If InStr ?????????
Range("?????").Value = Application.UserName
End If
End Sub

Dans le range j'avais mis Q:Q mais ça affichait mon username dans toute la colonne Q

Merci pour votre aide
 

drul

Obscur pro du hardware
Staff
Salut, un bon début ... mais faut faire une boucle là ...
Code:
Sub Usernameincell()
Dim derLigne As Long
Dim i As Long
derLigne = Cells(Rows.Count, "O").End(xlUp).Row ' on cherche la dernière cellule utilisée dans la colonne "O"
For i = 1 To derLigne 'on regarde chaque cellule de "O" jusqu'à la dernière ligne utilisée
    If Cells(i, "O").Value Like "Fait" Then 'instr fonctionne aussi, mais "like" est plus souple ... rem "=" fonctionnerait aussi ici
        Cells(i, "Q").Value = Application.UserName
    End If
Next
End Sub
Question: "Fait" est toujours écris ainsi (majuscule au début puis minuscule ensuite ? , peut-il y avoir autre chose d'écris dans la cellule (Genre "fait par", "fait le", ... ?
 

outilsetprocess

Expert
Non non c'est seulement "fait" mais je viens de tester votre code ça marche pas :/

Pourtant en le lisant je l'ai super bien compris, et ça a l'air super bien ficelé je comprends pas d'où ça peut venir
 

drul

Obscur pro du hardware
Staff
Soit plus précis, qu'est-ce qui se passe ?
Comment lances tu la macro ?
Tu peux mettre un screen de ta feuille ?

L'ayant tester chez moi, je ne vois pas trop ou il peut mal fonctionner ...
 

outilsetprocess

Expert
Alors en fait il y a deux problèmes, c'est que les username ne s'affichent pas un par un à chaque fois que je sélectionne fait

Et si par exemple un autre utilisateur lance le macro, son username s'affiche à la place du miens aux précédents
 

drul

Obscur pro du hardware
Staff
Ok comment lance tu la macro ?

Pour le problème du username, il suffirait de regarder que la colonne Q correspondante soit vide ...

Mais en fait un truc me chagrine, tu aimerais en fait que à chaque saisie de "Fait" le nom s'affiche automatiquement dans la colonne "Q" ? c'est bien ça ? Si c'est bien ça, alors la boucle n'est pas la meilleure solution ...
 

outilsetprocess

Expert
Je lance ma macro en appuyant sur le bouton exécuter après avoir sélectionné Fait parce que si je l'exécute avant ça ne se fait pas automatiquement

Et pour le problème du Username la cellule Q correspondant à la cellule O "Fait" est bien vide

Par exemple je traite les dossiers 1-2-3-4, je sélectionne "Fait", j'exécute la macro, mon nom apparaît bien dans la colonne Q jusque là niquel même si je préférais quand même un truc "automatique", "coup par coup"

Puis si une autre personne traite le dossier 6 et qu'elle lance la macro, les cellules Q1 Q2 Q3 Q4 et Q6 vont afficher son username et le mien va s'effacer des Q1 Q2 Q3 Q4 pour afficher le sien

Voili voilou
 

drul

Obscur pro du hardware
Staff
Meilleure réponse
ok, essaie ça, à mettre dans l'objet vba qui représente ta feuille

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ACell As Range
If Target.Column = 15 Then
    For Each ACell In Target.Cells
        If ACell.Column = 15 Then
            If ACell.Value Like "Fait" Then
                Cells(ACell.Row, "Q").Value = Application.UserName
            Else
                Cells(ACell.Row, "Q").Value = ""
            End If
        End If
    Next
End If
End Sub
 

outilsetprocess

Expert
C'est tout bonnement parfait merci beaucoup !
En plus ça me perfectionne dans les macros merci encore
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 078
Membres
1 586 395
Dernier membre
franckorus
Partager cette page
Haut