Colonne -1

guy974

XLDnaute Junior
Bonjour,

Dans le code d'un USF,j'ai un problème pour la partie en gras :

*************************************

Private L As Long 'Dimensionne et déclare la variable L


Private Sub CommandButton1_Click()


L = ActiveCell.Row


Dim col As Byte 'déclare la variable col



'trouver la cellule vide pour écrire la nouvelle date d'échéance
'sachant que w est la colonne 23


col = Rows(L).Find('', Range('S' & L), , , xlByColumns).Column 'première cellule vide en partant de la droite de 'S' jusqu'à 'W' inclus : cela correspond à la cellule où libre ou la nouvelle date d'échéance peut-être écrite
If col > 23 Then 'sachant que w est la colonne 23 = Date d'échéance 4
col = 23
End If



If Cells(L, col - 1) = CDate(TextBox6.Value) Then

Unload Me 'vide et ferme l'userform

Application.SendKeys ('{ESC}') 'désélectionne la saisie dans la cellule

End If


Cells(L, col) = CDate(TextBox6.Value)

Unload Me 'vide et ferme l'userform


Application.SendKeys ('{ESC}') 'désélectionne la saisie dans la cellule


End Sub



'sortir de l'UserForm (sans enregistrer de modif)


**********************************

En fait je cherche à ce que la comparaison se face sur la cellule de même ligne, directement à gauche de 'col' ----> col-1 mais cela ne marche pas...?

En vous remerciant

Guy
 

Gael

XLDnaute Barbatruc
Bonjour Guy, bonjout Pat, bonjour Pierrejean,

Pour moi, le problème vient du Find avec des paramètres par défaut mal définis. J'ai fait quelques essais et obtenu des résultats corrects en mettant:

col = Rows(L).Find('', after:=Range('S' & L), LookIn:=xlValues, lookat:=xlWhole).Column

Mais je ne suis pas une référence en VBA.

@+

Gael
 

guy974

XLDnaute Junior
Bonjour,

Merci beaucoup, Pat, Gael,

Vos bonnes idées n'y changent rien :-(

Pour contourner ce problème,

La valeur de départ de la TextBox6 est reprise de la feuille excel.

Quel serais le code pour dire à la validation de l'USF:

'Si la valeur de la TexBox6 n'a pas été modifiée' Then....

En vous remerciant
 

Gael

XLDnaute Barbatruc
Bonjour Guy, bonjour à tous,

Ta réponse me surprend un peu car j'ai obtenu des résultats corrects sur un essai mais sans avoir le userform.

Peux-tu nous envoyer un fichier exemple avec le userform de saisie et quelques données.

Fichier .zip de -de 50Ko sans espace ni accent ni caractère spécial dans le nom.

@+

Gael
 

guy974

XLDnaute Junior
Merci beaucoup pour ton intéret Gael,

C'est vrai que c'est plus facile de voir avec le fichier.

J'ai allégé mon fichier,

Le voici,

L'USF apparait lorsque l'on double clic sur une ligne du tableau, les élément de la ligne sont alors repris dans l'USF.

Merci [file name=Plan_d_action_test.zip size=40682]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Plan_d_action_test.zip[/file]
 

Pièces jointes

  • Plan_d_action_test.zip
    39.7 KB · Affichages: 11

Gael

XLDnaute Barbatruc
Bonsoir Guy,

J'ai simplifié très légèrement le code mais pour moi il fonctionne très bien, la variable Col est bien initialisée, la comparaison se fait ainsi que la mise à jour.

Pour tester ton code, tu peux créer facilement un point d'arrêt en cliquant à gauche d'une instruction. lors de l'exécution, la macro va s'arreter sur cette ligne puis tu peux continuer pas à pas avec F8. En positionnant la souris sur le nom d'une variable, la valeur de la variable s'affiche ce qui te permet de contrôler le bon déroulement du process.

Pour le tableau, je t'ai fait une ou 2 propositions mais d'une façon générale, lorsque tu testes des cellules adjacentes, tu peux utiliser une plage ex: Max(A1:B100)...

@+

Gael [file name=Plan_d_action_V1.zip size=40702]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Plan_d_action_V1.zip[/file]
 

Pièces jointes

  • Plan_d_action_V1.zip
    39.7 KB · Affichages: 12

Statistiques des forums

Discussions
312 362
Messages
2 087 635
Membres
103 618
dernier inscrit
Eraser