Affectation adresse Range par Variable
Bonjour,
Je souhaite pouvoir modifier le n° de la colonne de recherche via une la valeur de d'une variable c.
ça fonctionne si je rentre le n° de la colonne F dans Range et non si j'utilise la valeur de la variable c
Dim i As Integer 'n° de ligne
Dim c As String 'n° colonne suivant Recherche
'Selection de la colonne de recherche
If CheckBoxSelNom = True Then
c = G ' n° colonne G
Else
c = F ' n° Colonne F
End If
i = 0 'Index
With Sheets("ListeMa2") 'Affection de la feuille de référence
For i = 7 To Sheets("ListeMa2").Range("F65536").End(xlUp).Row 'Incrementation de l'Index
'Recherche si la valeur selectee dans la liste(ListBoxJeton_Nom) existe
'Fonctionne avec le n° de colonne
'If Sheets("ListeMoteurMa2").Range("F" & i).Value = Val(TextBoxSel.Value) Then 'Pointage de ligne contenant la valeur définit dans TextBoxSel= ListBoxJeton_Nom
'Syntaxe qui ne fonctionne pas
If Sheets("ListeMoteurMa2").Range("c" & i).Value = Val(TextBoxSel.Value) Then 'Pointage de ligne contenant la valeur définit dans TextBoxSel= ListBoxJeton_Nom
Merci pour votre aide.
Cdlt
Salut
Essayer de déclarer le C comme type numérique ( byte , integer…….)
Bonjour Amir,
Je te remercie pour ton aide.
J'ai testé en déclarant C comme type ( byte , variant, integer…….)
mais idem.
Cdlt
Bonjour,
si vous remplacez c = G par c = 7 et c = F par c = 6?
Cordialement,
Innuendo67
Bonjour,
Essaie ainsi (sans résultat garanti).
Cdlt.
Dim ws As Worksheet, ws2 As Worksheet
Dim I As Long, lCol As Long, n As Long
lCol = IIf(CheckBoxSelNom, 7, 6)
Set ws = Worksheets("ListeMa2")
Set ws2 = Worksheets("ListeMoteurMa2")
With ws
n = .Cells(.Rows.Count, 6).End(xlUp).Row
For I = 7 To n
If ws2.Cells(lCol, I) = Val(TextBoxSel.Value) Then
' code
End If
Next I
End With
Bonsoir
Il me semble que vous ignorez quelques astuces en VBA.
Méthode 1
Utilisez Range(arg), où arg désigne la plage, pour renvoyer un objet Range qui représente une seule cellule ou une plage de cellules. L'exemple suivant montre comment placer la valeur de la cellule A1 dans la cellule A5.
Worksheets("ListeMa2").Range("A5").Value = Worksheets("ListeMa2").Range("A1").Value
Méthode 2
Utilisez Cells(ligne, colonne) où ligne est l'index de ligne et colonne l'index de colonne, pour renvoyer une seule cellule. L'exemple suivant montre comment affecter la valeur 24 à la cellule A1.
Worksheets("ListeMa2").Cells(1, 1).Value = 24
Voici un exemple pour ton cas (dans je fichier joint, entrez la lettre que vous voulez rechercher dans la cellule G1 et appuyez sur le flèche, choisir la colonne de recherche soit A ou B mais pas les deux à la fois
Ceci est pour la Méthode 1 pour la deuxième je vais voir si j aurai le temps (la deuxième est plus compliqué mais bcp utilisées).
Sub recherch()
Dim i As Integer 'n° de ligne
Dim c As String 'n° colonne suivant Recherche
Dim r As String 'n° colonne suivant de resultat
'Selection de la colonne de recherche
If Worksheets("ListeMa2").Range("D1").Value = "x" Then
c = "A" ' n° colonne de recherche A
r = "D" ' n° colonne de resultat d
ElseIf Worksheets("ListeMa2").Range("F1").Value = "x" Then
c = "B" ' n° Colonne de recherche B
r = "F" ' n° colonne de resultat f
End If
If c = "" Or r = "" Then
MsgBox " veuillez selectionner une colonne de recherche"
Exit Sub 'sortir de procedure si il n y ps de colonne pour la recherche
End If
For i = 2 To 22 'Incrementation avec boucle
Sheets("ListeMa2").Range("f" & i).ClearContents
Sheets("ListeMa2").Range("d" & i).ClearContents
If Sheets("ListeMa2").Range(c & i).Value = Sheets("ListeMa2").Range("G" & 1).Value Then
Sheets("ListeMa2").Range(r & i).Value = "x"
End If
Next
End Sub
Ceci est pour la Méthode 2
Tjrs choisir la colonne par « x «
Remarque :
sur Méthode 1 :
Dim c As String 'n° colonne suivant Recherche
Dim r As String 'n° colonne suivant de resultat
Sont déclarés comme type texte = ils prennent des valeurs texte = les lettres des colonnes
sur Méthode 2 :
Dim c As Integer 'n° colonne suivant Recherche
Dim r As Integer 'n° colonne suivant de resultat
Sont déclarés comme type numérique = ils prennent des valeurs numériques = les numéros des colonnes
Sub recherch2()
Dim i As Integer 'n° de ligne
Dim c As Integer 'n° colonne suivant Recherche
Dim r As Integer 'n° colonne suivant de resultat
'Selection de la colonne de recherche
If Worksheets("ListeMa2").Cells(1, 4).Value = "x" Then
c = 1 ' n° colonne de recherche A
r = 4 ' n° colonne de resultat d
ElseIf Worksheets("ListeMa2").Cells(1, 6).Value = "x" Then
c = 2 ' n° Colonne de recherche B
r = 6 ' n° colonne de resultat f
End If
If c = 0 Or r = 0 Then
MsgBox " veuillez selectionner une colonne de recherche"
Exit Sub 'sortir de procedure si il n y ps de colonne pour la recherche
End If
For i = 2 To 22 'Incrementation avec boucle
Sheets("ListeMa2").Cells(i, 4).ClearContents
Sheets("ListeMa2").Cells(i, 6).ClearContents
If Sheets("ListeMa2").Cells(i, c).Value = Sheets("ListeMa2").Cells(1, 7).Value Then
Sheets("ListeMa2").Cells(i, r).Value = "x"
End If
Next
End Sub
Bonjour,
je viens de faire un petit fichier afin de vous aider.
Je pense que mon problème vient dans la comparaison,
ça fonctionne si la valeur est numérique et non quand il y a du texte.
Cdl
Bonjour,
Je viens de trouver la réponse.
Dans mon dernier message il y avait en réalité la réponse dans ma question,
c'est logique que la comparaison ne fonctionnait pas avec du texte car j'avais utilisé par erreur
Val(TextBoxSel.Value) au lieu
Val(TextBoxSel.texte.
Et surtout merci à tous ce qui m'ont aidé.
Cdlt