Se connecter / S'enregistrer
Votre question
Résolu

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

Tags :
  • VBA
  • Microsoft Excel
  • Programmation
Dernière réponse : dans Programmation
15 Septembre 2016 08:23:06

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

Autres pages sur : galere ouf aidez svp

a b L Programmation
15 Septembre 2016 09:32:55

Salut, un bon début ... mais faut faire une boucle là ...
  1. Sub Usernameincell()
  2. Dim derLigne As Long
  3. Dim i As Long
  4. derLigne = Cells(Rows.Count, "O").End(xlUp).Row ' on cherche la dernière cellule utilisée dans la colonne "O"
  5. For i = 1 To derLigne 'on regarde chaque cellule de "O" jusqu'à la dernière ligne utilisée
  6. If Cells(i, "O").Value Like "Fait" Then 'instr fonctionne aussi, mais "like" est plus souple ... rem "=" fonctionnerait aussi ici
  7. Cells(i, "Q").Value = Application.UserName
  8. End If
  9. Next
  10. 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", ... ?
m
0
l
15 Septembre 2016 09:54:26

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
m
0
l
Contenus similaires
a b L Programmation
15 Septembre 2016 10:16:45

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 ...
m
0
l
15 Septembre 2016 13:04:17

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
m
0
l
a b L Programmation
15 Septembre 2016 13:10:06

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 ...
m
0
l
15 Septembre 2016 13:57:35

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
m
0
l

Meilleure solution

a b L Programmation
15 Septembre 2016 14:42:27

ok, essaie ça, à mettre dans l'objet vba qui représente ta feuille

  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim ACell As Range
  3. If Target.Column = 15 Then
  4. For Each ACell In Target.Cells
  5. If ACell.Column = 15 Then
  6. If ACell.Value Like "Fait" Then
  7. Cells(ACell.Row, "Q").Value = Application.UserName
  8. Else
  9. Cells(ACell.Row, "Q").Value = ""
  10. End If
  11. End If
  12. Next
  13. End If
  14. End Sub
partage
15 Septembre 2016 17:02:20

C'est tout bonnement parfait merci beaucoup !
En plus ça me perfectionne dans les macros merci encore
m
0
l
a b L Programmation
15 Septembre 2016 17:07:33

De rien.
Sélectionne la mailleur réponse stp.
m
0
l