Lameche15
Messages postés156Date d'inscriptionmardi 9 septembre 2008StatutMembreDernière intervention15 septembre 2022
-
Modifié le 4 déc. 2020 à 18:01
Patrice33740
Messages postés8556Date d'inscriptiondimanche 13 juin 2010StatutMembreDernière intervention 2 mars 2023
-
7 déc. 2020 à 11:22
Bonjour
Je n'arrive pas à comprendre pourquoi je n'arrive pas à rentrer dans ma boucle if.
Private Sub CommandButton1_Click()
Dim numsem, sem As Double
Dim adresse As Range
numsem = UserForm1.TextBox1
Range("D7:AH7").Select
For Each cell In Selection 'Récupération de la cellule correspondant au num semaine
If cell.Value = numsem Then
col = cell.Column
MsgBox "colonne: " & col & " numéro semaine: " & numsem
Else
MsgBox "Ce numéro de semaine n'existe pas " & numsem
End If
Next cell
UserForm1.Hide
UserForm1.TextBox1 = ""
End Sub
J'imagine que cell.value et numsem ne sont pas compatibles
Comment dois-je m'y prendre?
Patrice33740
Messages postés8556Date d'inscriptiondimanche 13 juin 2010StatutMembreDernière intervention 2 mars 202321 Modifié le 4 déc. 2020 à 18:59
Bonjour,
1) Toujours commencer ses modules par Option Explicit
2) Typer correctement les variables
3) Préciser la parentalité des range en particulier à partir d'un formulaire ou d'un module standard
4) Explorer toutes les possibilités avant d'afficher un résultat négatif
Par Exemple :
Option Explicit
Private Sub CommandButton1_Click()
Dim numSem As Integer, col as long
Dim cel As Range
numSem = CInt(UserForm1.TextBox1)
For Each cel In Worksheets("Feuil1").Range("D7:AH7") 'Adapter le nom de la feuille
If cel.Value = numSem Then col = cel.Column
Next cel
If col > 0 Then
MsgBox "colonne: " & col & " numéro semaine: " & numSem
Else
MsgBox "Ce numéro de semaine n'existe pas " & numSem
End If
UserForm1.Hide
UserForm1.TextBox1 = ""
End Sub
Cordialement
Patrice
Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
Lameche15
Messages postés156Date d'inscriptionmardi 9 septembre 2008StatutMembreDernière intervention15 septembre 2022 7 déc. 2020 à 08:36
Merci pour ce mini cours.
Je souhaite faire des efforts pour optimiser mes programmes.
A quoi sert Option EXplicit?
--
Patrice33740
Messages postés8556Date d'inscriptiondimanche 13 juin 2010StatutMembreDernière intervention 2 mars 202321 7 déc. 2020 à 11:22
Ça rend obligatoire la déclaration des variables, ce qui évite de nombreuse erreurs.
Le VBE (l'éditeur VBA) peut le faire automatiquement : Outils / Options, Cocher déclaration des variables obligatoires