Incompatibilité de type

Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022 - Modifié le 4 déc. 2020 à 18:01
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Derniè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?

Merci d'avance

--

3 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 21
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



1
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
4 déc. 2020 à 16:28
Bonjour,

Il faut déclarer ta variable numsem en Integer!
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 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?

--
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 21
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
0
Rejoignez-nous