Résolu écrire un texte défini dans une case excel dans une condition

donutsledingue

Habitué
bien le bonjour à vous !

voila je pense que mon titre est assé explicite

je n'ai pas trouvé quelle est la commande pour forcer l'écriture d'un string dans une case

Code:
If bob=1 then

'écrire un "x" dans la case A:12

Else

'effacer les case de la colone A

End If

quelqu'un pourrait m'aider ??? :??: :??:
 

zeb

Modérateur
Meilleure réponse
Salut,

Demande à l'enregistreur de macro :
Alors que l'enregistrement est en cours, mets une valeur dans la cellule A12, puis efface les cases de la colonnes A. Arrête l'enregistrement et va regarder le code obtenu. Etudie-le, et surtout arrange-le, parce qu'il est très moche. Je peux t'aider à le faire.
 

donutsledingue

Habitué
ok merci j'aurais du y penser avant

je termine et j'envoie mon code j'essai déjà de le mettre un pe mieux en forme de mon côté
 

donutsledingue

Habitué
voici mon code

Code:
ListBox1.Clear
    While fichiers <> ""
        ListBox1.AddItem fichiers
        
        'I//écriture du tableau
            'A)Le nom du stagiaire
            Range("D3").Select
            ActiveCell.FormulaR1C1 = NomStagiaire
        
            'B)Se Présenter première exercice
                If fichiers Like "*ValideSePresenter1*" Then
                    Range("E6").Select
                    ActiveCell.FormulaR1C1 = "X"
                Else
                    Range("E6").Select
                    ActiveCell.FormulaR1C1 = ""
                End If
                
                If fichiers Like "*EnCoursSePresenter1*" Then
                    Range("F6").Select
                    ActiveCell.FormulaR1C1 = "X"
                Else
                    Range("F6").Select
                    ActiveCell.FormulaR1C1 = ""
                End If
        fichiers = Dir()
    Wend

je voulais faire en sorte que :

-pour chacune des valeur de fichiers soit rentré dans la listbox1 ça fonctionne
-si l'une des valeurs de fichier contien ValideSePresenter1 alors on met une croi dans E6 sinon on enlève la croi précédente (et c là que je m'embrouille un pe déjà dans mon algo)

-si l'une des valeurs de fichier contien EnCoursSePresenter1 alors on met la croi dans E7

hum hum je m'embrouille tout seul
 

zeb

Modérateur
Mouhais :/

Bon, alors première chose, tu me vires tout de suite ces Machin.Select/ActiveCell.Truc. C'est ridicule. Ecris Machin.Truc directement. :spamafote:
FormulaR1C1, c'est trop long à écrire. Formula, est plus court. Mais au fait, pourquoi entrer une formule alors que ce n'en est pas une ? Utilise Value. :o
Pis While .. Wend c'est du BASIC 1, de 1985. Utilise Do While .. Loop.

Regarde :
Code:
'// Doit manquer un Dir(quelquechose) Ici ??
fichiers = Dir(quelquechose)

ListBox1.Clear
Do While fichiers <> ""
    ListBox1.AddItem fichiers
   
    '// I//écriture du tableau
    
    '// A)Le nom du stagiaire
    Range("D3" ).Value = NomStagiaire

    '// B)Se Présenter première exercice
	If fichiers Like "*ValideSePresenter1*" Then
		Range("E6" ).Value = "X"
	Else
		Range("E6" ).Value = ""
	End If
	
	If fichiers Like "*EnCoursSePresenter1*" Then
		Range("F6" ).Value = "X"
	Else
		Range("F6" ).Value = ""
	End If
    fichiers = Dir()
Loop

Ca à plus de gueule, non ?
Alors on complique, pour simplifier :pt1cable: (Ne pas trop en abuser) :
Code:
Dim fichier As String

fichier = Dir(quelquechose)
ListBox1.Clear
Do While fichiers <> ""
    ListBox1.AddItem fichier
   
    Range("D3" ).Value = NomStagiaire
	Range("E6" ).Value = Iif(fichier Like "*ValideSePresenter1*",  "X", "")
    Range("F6" ).Value = Iif(fichier Like "*EnCoursSePresenter1*", "X", "")
	
    fichier = Dir()
Loop

(J'ai mis le nom de la variable au singulier :p )

Allez, à toi de m'étudier tout ça, pour que ça te soit profitable.

----------------------------

C'est dans le nom du fichier que tu veux trouver ValideSePresenter1 et/ou EnCoursSePresenter1 ?
 

donutsledingue

Habitué
oui c'est bien dans le nom du fichier mais fichier contient plusieur nom enfaite fichier renvoi les nom de fichiers contenu dans un répertoire

et quelque soit le nom du fichier (si il contient "ValideSepresenter1" ou "EnCourSepresenter2) j'ai toujours un X dans F6 et F7...

Code:
Private Sub ListBox2_Click()
Dim NomStagiaire As String


NomStagiaire = ListBox2.Value
fichiers = Dir("\\squeeze\exo\cours d'anglais\Suivi Stagiaire\" & NomStagiaire & "\")

'MsgBox NomStagiaire & ": "
ListBox1.Clear
    Do While fichiers <> ""
        ListBox1.AddItem fichiers
     
        'I//écriture du tableau
            'A)Le nom du stagiaire
            Range("D3").Value = NomStagiaire
        
            'B)Se Présenter première exercice
                If fichiers Like "*ValideSePresenter1*" Then
                    Range("E6").Value = "X"
                Else
                    Range("E6").Value = ""
                End If
                
                If fichiers Like "*EnCoursSePresenter1*" Then
                    Range("F6").Value = "X"
                Else
                    Range("F6").Value = ""
                End If
            'C)Se Présenter deuxième exercice
                 If fichiers Like "*ValideSePresenter2*" Then
                    Range("E7").Value = "X"
                Else
                    Range("E7").Value = ""
                End If
                
                If fichiers Like "*EnCoursSePresenter1*" Then
                    Range("F7").Value = "X"
                Else
                    Range("F7").Value = ""
                End If
        fichiers = Dir()
    Loop
End Sub

PS:
pourquoi tu dit qu'il ne faut pas abuser du If bizar ?
Code:
Iif(fichier Like "*ValideSePresenter1*",  "X", "" )
 

zeb

Modérateur
Euh, non, c'est de compliquer pour simplifier, dont il ne faut pas abuser. Sous UNIX, on a même inventé le principe :D

Je vois que tu es approximatif dans la déclaration de tes variables (c'est un reproche :o - sauf si tu ne montres pas tout ton code ce qui n'est plus un reproche :) ). Utilise l'Option Explicit.

Je ne vois pas le problème pour tes croix. Sauf que la ligne 18 et la ligne 36 sont identiques. Sois plus rigoureux. Raccourcir les lignes de code grâce à Iif() par exemple, et tout mettre comme dans un pseudo tableau (regarde mes lignes 8, 9 et 10, ne dirait-on pas un tableau) permet de vérifier du premier coup d'oeil.
 

donutsledingue

Habitué
c'est vrai que c'est classe si j'ai bien compri

si on décompose la parenthèse du IIf on a d'abord le If ensuite le then et ensuite le else c'est biens ça ?

sinon voila mon code complet
je pense que le problème vien du faite qu'il y a plusieurs valeurs dans Fichiers
(parcequ'il y a plusieurs fichiers dans le repertoire )
j'ai mis ma construction de tableau là parceque c'est là que la valeurs de fichiers va changer pour chacun des noms de fichier du repertoire concerné

Code:
Private Sub CommandButton2_Click()

Dim A As Integer
Dim Fs As Object, Files As Object, F As Object
Dim NomDossier As String
Dim Sf As Object, Fx As Object
Dim NomStagiaire As String


ListBox2.Clear

A = 2
Set Fs = CreateObject("Scripting.FileSystemObject")
NomDossier = "\\squeeze\exo\cours d'anglais\Suivi Stagiaire"


If NomDossier = "" Then Exit Sub
    Set Dossier = Fs.GetFolder(NomDossier)
    Set Files = Dossier.Files
    If Files.Count <> 0 Then
        Set F = Fs.GetFolder(NomDossier)
        Set Sf = F.SubFolders
        For Each Fx In Sf
            A = A + 1
            ListBox2.AddItem Fx.Name
        Next
    
    End If
    
End Sub


Private Sub ListBox2_Click()
Dim NomStagiaire As String


NomStagiaire = ListBox2.Value
fichiers = Dir("\\squeeze\exo\cours d'anglais\Suivi Stagiaire\" & NomStagiaire & "\")

ListBox1.Clear

    Do While fichiers <> ""
        ListBox1.AddItem fichiers
     
        'I//écriture du tableau
        
            'A)Le nom du stagiaire
            
            Range("D3").Value = NomStagiaire
        
            'B)Se Présenter
            
            Range("E6").Value = IIf(fichier Like "*ValideSePresenter1*", "X", "")
            Range("F6").Value = IIf(fichier Like "*EnCoursSePresenter1*", "X", "")
            Range("E7").Value = IIf(fichier Like "*ValideSePresenter2*", "X", "")
            Range("F7").Value = IIf(fichier Like "*EnCoursSePresenter2*", "X", "")
            
            'C)Les Articles
            
            Range("E8").Value = IIf(fichier Like "*ValideLesArticles1*", "X", "")
            Range("F8").Value = IIf(fichier Like "*EnCoursLesArticles1*", "X", "")
            Range("E9").Value = IIf(fichier Like "*ValideLesArticles2*", "X", "")
            Range("F9").Value = IIf(fichier Like "*EnCoursLesArticles2*", "X", "")
            Range("E10").Value = IIf(fichier Like "*ValideLesArticles3*", "X", "")
            Range("F10").Value = IIf(fichier Like "*EnCoursLesArticles3*", "X", "")
            
            
        fichiers = Dir()
    Loop
End Sub


mais j'ai aucune croix qui s'affiche :'( snif
 

donutsledingue

Habitué
:s effectivement je ne suis pas assé rigoureux c'était des faute de frape dans le nom des "valideSePresenter1"
par contre je voudrais que si il y a 3 fichiers détecté il y ai 3 croix dans le tableau ce qui n'est pas le cas actuellement c'est à cause du ELSE "" mais je ne sais pas par quoi le remplacer
 

donutsledingue

Habitué
est ce que je suis obligé de tout remplacer par des if then sans Else avec un effacement des croix à la fin de tout les if ?
ou bien est ce qu'il y a une autre solution avec le IIF ?
 

donutsledingue

Habitué
pour l'instant j'ai rajouté avant la boucle
Code:
Range("E6,E7,E8,E9,E10,F6,F7,F8,F9,F10").Value = ""

et j'ai remplacé mais IIF par

Code:
            If fichiers Like "*valideSePresenter1*" Then
                Range("E6").Value = "X"
            End If

je sais c'est trop moche je me sen honteux ! mais IIF ne peux pas s'écrire sans Else ou je me trompe ?
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 054
Membres
1 586 393
Dernier membre
mathhh28
Partager cette page
Haut