Incompatibilité de type

Signaler
Messages postés
150
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
18 janvier 2021
-
Messages postés
8536
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
8 mai 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
8536
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
8 mai 2021
21
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
7398
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
27 mai 2021
123
Bonjour,

Il faut déclarer ta variable numsem en Integer!
Messages postés
150
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
18 janvier 2021

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

A quoi sert Option EXplicit?

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