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

Résolu/Fermé
jpub Messages postés 43 Date d'inscription mardi 10 mai 2011 Statut Membre Dernière intervention 19 janvier 2016 - 24 sept. 2014 à 10:48
jpub Messages postés 43 Date d'inscription mardi 10 mai 2011 Statut Membre Dernière intervention 19 janvier 2016 - 24 sept. 2014 à 14:36
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

A voir également:

5 réponses

scinarf Messages postés 1098 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
24 sept. 2014 à 11:17
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
Normad Messages postés 112 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 37
24 sept. 2014 à 11:22
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
24 sept. 2014 à 11:24
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
jpub Messages postés 43 Date d'inscription mardi 10 mai 2011 Statut Membre Dernière intervention 19 janvier 2016 1
Modifié par jpub le 24/09/2014 à 12:39
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jpub Messages postés 43 Date d'inscription mardi 10 mai 2011 Statut Membre Dernière intervention 19 janvier 2016 1
24 sept. 2014 à 14:36
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