Incompatibilité de type

Signaler
Messages postés
130
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
8 décembre 2020
-
Messages postés
8323
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 janvier 2021
-
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

Messages postés
8323
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 janvier 2021
20
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.
Messages postés
7163
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
7 janvier 2021
117
Bonjour,

Il faut déclarer ta variable numsem en Integer!
Messages postés
130
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
8 décembre 2020

Merci pour ce mini cours.
Je souhaite faire des efforts pour optimiser mes programmes.

A quoi sert Option EXplicit?

--
Messages postés
8323
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 janvier 2021
20
Ç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