[VBA] code ok mais rien ne s'écrit ds les cellules

Résolu
Bonjour,

j'ai fait un petit userform qui me permet d'ajouter des dossiers dans mon tableau de suivi.

Dans mon code j'ai bien mis en place un contrôle pour savoir si je suis sur le bon fichier puis si c'est le cas rajouter le texte, la date et le type dans les bonnes colonnes.

J'arrive bien à déterminer la dernière ligne mais rien ne s'écrit dedans, je ne comprend pas pourquoi ?

De plus, au lieu de vérifier si je suis sur le bon fichier, la macro rajouter l'info dans le fichier (mm si il est fermé) => si vous pouviez me donner une piste ?

Merci d'avance

Voici mon code

Private Sub CommandButton1_Click()
Dim she As Worksheet
On Error Resume Next
Set she = Sheets("Gestion")
If she Is Nothing Then
Exit Sub
Else
End If

derniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1

Sheets("Gestion").Range("derniereLigne, 4 ") = TextBox1.Text
Sheets("Gestion").Range("derniereLigne, 3 ") = DTPicker1.Value
If OptionButton1.Enabled Then
Sheets("Gestion").Range("derniereLigne, 2 ") = "P"
Else
Sheets("Gestion").Range("derniereLigne, 2 ") = "W"
End If

End Sub

Cordialement,

jonathan

5 réponses

  1. Le classique horrible range ....

    Il faut utiliser l'objet cells.

    derniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1

    Sheets("Gestion").cells(derniereLigne, 4 ) = TextBox1.Text
    Sheets("Gestion").cells(derniereLigne, 3) = DTPicker1.Value
    If OptionButton1.Enabled Then
    Sheets("Gestion").cells(derniereLigne, 2 ) = "P"
    Else
    Sheets("Gestion").cells(derniereLigne, 2) = "W"
    End If
    0
    1. Bonjour,

      L'adressage des cellules est faux
      Sheets("Gestion").Range("derniereLigne, 4 ")
      FAUX

      Sheets("Gestion").Cells(derniereLigne, 4)
      JUSTE

      Les 2 erreurs :

      Dans Range les guillemets supprime la référence à la variable derniereligne et envoi derniereligne en texte

      Avec Range il faut faire l'adressage au format A1, pour utiliser des numéros de colonnes, utilisez Cells
      0
      1. Bonjour,

        Pour Cells on utilise les coordonnées (ligne, colonne. Par ex Cells(2,2) pour la cellule "B2") d'une cellule.
        Pour Range on utilise l'adresse de la cellule (par ex "A1" ou "F4")

        Si tu veux utiliser Range :
        Sheets("Gestion").Range("D" & derniereLigne) = TextBox1.Text 

        0
        1. Re-Bonjour,

          Un grand merci pour vos explications et vos réponses que je garde bien au chaud .

          Polux31 pour ta centième réponses à tous mes petits problèmes un grand grand merci ^^

          Je me permet une dernière question, pourquoi l'userform met presque 10 secondes à se fermer ?

          code final

          Private Sub CommandButton1_Click()
          Dim she As Worksheet
          On Error Resume Next
          Set she = Sheets("Gestion")
          If she Is Nothing Then
          Exit Sub
          Else
          End If

          derniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
          Sheets("Gestion").Cells(derniereLigne, 4) = TextBox1.Text
          Sheets("Gestion").Cells(derniereLigne, 3) = DTPicker1.Value

          If OptionButton1.Enabled Then
          Sheets("Gestion").Cells(derniereLigne, 2) = "P"
          Sheets("Gestion").Cells(derniereLigne, 59) = Clear
          Sheets("Gestion").Range(Cells(derniereLigne, 29), Cells(derniereLigne, 59)).Interior.ColorIndex = 16

          Else
          Sheets("Gestion").Cells(derniereLigne, 2) = "W"
          Sheets("Gestion").Cells(derniereLigne, 27) = Clear
          Sheets("Gestion").Range(Cells(derniereLigne, 6), Cells(derniereLigne, 27)).Interior.ColorIndex = 16

          End If

          Unload Me

          End Sub

          Cordialement,

          Jonathan,
          0
          1. correction du code

            Dim she As Worksheet
            Dim a, b As Boolean

            On Error Resume Next
            Set she = Sheets("Gestion")
            If she Is Nothing Then
            Exit Sub
            Else
            End If

            a = OptionButton1.Value
            b = OptionButton2.Value

            derniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1

            Sheets("Gestion").Cells(derniereLigne, 4) = TextBox1.Text
            Sheets("Gestion").Cells(derniereLigne, 3) = DTPicker1.Value

            If OptionButton1.Value = True Then
            Sheets("Gestion").Cells(derniereLigne, 2) = "W"
            Sheets("Gestion").Cells(derniereLigne, 27) = Clear
            Sheets("Gestion").Range(Cells(derniereLigne, 6), Cells(derniereLigne, 27)).Interior.ColorIndex = 16
            Else
            Sheets("Gestion").Cells(derniereLigne, 2) = "P"
            Sheets("Gestion").Cells(derniereLigne, 59) = Clear
            Sheets("Gestion").Range(Cells(derniereLigne, 29), Cells(derniereLigne, 59)).Interior.ColorIndex = 16
            End If

            End Sub
            0