VBA Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivante

avekash

XLDnaute Nouveau
Bonsoir a tous...

Je bloque sur une étape dans la réalisation de mon projet.
En effet j'ai élaboré un userform "caisse" qui en actionnant le bouton ENTREE ou SORTIE renvoie les données
dans une feuille Excel "GESTION_CAISSE" à plusieurs colonne dont la "colonne F" à partir de la "ligne 3" contient cette formule = "=SI(OU(A3="";NBCAR(D3&E3)=0);"";F2+D3-E3)" qui est sensé me donné le solde de la caisse.

Mon souci: j'aimerais copier automatiquement la formule ="=SI(OU(A3="";NBCAR(D3&E3)=0);"";F2+D3-E3)" présente en F3 dans la cellule suivante de la même colonne en se référant au fait que la condition de la copie est la présence dans la "colonne A" sur la même ligne d'une valeur en occurrence la date (03/08/2013...).

J'ai essayé d'adapter quelques codes pris sur le net mais je n'arrive pas avancer :

1-/ Ne marche pas
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cel As Range, Plage As Range, x
Set Plage = Intersect(Target, Range([D2], Cel))
For Each Cel In Plage
If Cells(Cel.Row, "D") & Cells(Cel.Row, "E") = 0 Then
Cells(Cel.Row, "F").ClearContents
Else
Cells(Cel.Row, "F").FormulaLocal = "=SI(OU(A3="";NBCAR(D3&E3)=0);"";F2+D3-E3)"
End Sub

2-/ N'a également pas marché
Code:
Private Sub CommandButtonEntree_Click()

Dim Celnvide As Long
Dim ColFformul As Range
Celnvide = Range("A3").End(xlUp).Row

'Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivante de la même colonne
    
    Set ColFformul = Range("F65536").End(xlUp).Row
    If Celnvide = 1 Then
    ColFformul.FormulaLocal = "=SI(OU(A3="";NBCAR(D3&E3)=0);"";F2+D3-E3)"
    End If
End sub

PS: J'ai essayé de placer le code dans le bouton ENTREE tout comme dans le Code de la feuille GESTION_CAISSE.

Merci pour toute votre aide
 

Pièces jointes

  • Nouvelle image.jpg
    Nouvelle image.jpg
    46.6 KB · Affichages: 126
  • Nouvelle image.jpg
    Nouvelle image.jpg
    46.6 KB · Affichages: 156
  • Nouvelle image.jpg
    Nouvelle image.jpg
    46.6 KB · Affichages: 152

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivan

Bonjour avekash,
Je bloque sur une étape dans la réalisation de mon projet.
En effet j'ai élaboré un userform "caisse".............
Les deux codes présentés n'ont absolument aucun rapport avec un quelconque userform


en pièce jointe une solution sans userform, sans VBA ............ et sans complication

à+
Philippe
 

Pièces jointes

  • 111.xlsx
    13 KB · Affichages: 83
  • 111.xlsx
    13 KB · Affichages: 93
  • 111.xlsx
    13 KB · Affichages: 81

Paf

XLDnaute Barbatruc
Re : VBA Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivan

bonjour

concernant le 1-/ à travers le code, pas tout compris ce que vous vouliez faire.
Pour le 2-/
Pour écrire la formule dans la dernière ligne;
Code:
Private Sub CommandButton1_Click()
Dim Lign As Long
Dim Plage As String


Lign = Range("A" & Rows.Count).End(xlUp).Row 'Dernière ligne renseignée

'********* Création de la Formule **********
Plage = "=If(Or(A" & Lign & "="""",len(D" & Lign & "&E" & Lign & ")=0),"""",F" & Lign - 1 & "+D" & Lign & "-E" & Lign & ")"


Range("F" & Lign).Formula = Plage

End Sub

pour copier la formule de l'avant dernière ligne:
Code:
Private Sub CommandButton2_Click()

Lign = Range("A" & Rows.Count).End(xlUp).Row 'Dernière ligne renseignée

Range("F" & Lign - 1).Copy
Range("F" & Lign).Select
ActiveSheet.Paste
Application.CutCopyMode = False

End Sub

Bonne suite
 

avekash

XLDnaute Nouveau
Re : VBA Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivan

Bonsoir Phlaurent 55

AU fait le codes présenté (1) est sensé être le code de la feuille "GESTION_CAISSE" qui doit recevoir les données venant de ma userform caisse. Et le code suivant (2) tester, je l'ai mis dans un bouton de validation "ENTRE" de ma userform de sorte qu'elle agisse sur la Feuille "GESTION_CAISSE" J'avoue que je n'ai pas mis le code entier du bouton vue que tout marche normalement sauf le bout de code concernant mon problème que j'ai exposé plus haut.

Toutefois je te remercie pour ta réponse et je vais essayer la solution que tu me propose (sans complication)

Je te tiens informer
Encore merci

A+
 

avekash

XLDnaute Nouveau
Re : VBA Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivan

Rebonsoir Phlaurent55

ta solution que tu proposes est bonne seulement, il n'est pas prévu dans mon projet de remplir diretement la feuille ainsi mais via un userform dont je te fait voir le visuel Userform Caisse OK.jpg

Merci pour ta disponibilité
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivan

Re,

n'ayant pas le fichier réel à disposition et par le fait même, ne pouvant pas t'amener une solution toute faite, je pense que la meilleure solution est l'utilisation conjointe d'un tableau (comme dans mon exemple) et d'un userform qui servirait uniquement à remplir la dernière ligne du tableau
il ne sera pas nécessaire de se casser le dernier neurone en créant une procédure pour adapter les formules
J'avoue que je n'ai pas mis le code entier du bouton vue que tout marche normalement sauf le bout de code concernant mon problème que j'ai exposé plus haut.
ce(s) bout(s) de code sont inutiles lors de l'utilisation d'un tableau puisque les formules s'adaptent automatiquement

à+
Philippe
 

JHA

XLDnaute Barbatruc
Re : VBA Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivan

Bonjour à tous,

Avec l'icone formulaire et le mode tableau, pas besoin de VBA

JHA
 

Pièces jointes

  • Formulaire.xlsx
    132.2 KB · Affichages: 81
  • Formulaire.xlsx
    132.2 KB · Affichages: 80
  • Formulaire.xlsx
    132.2 KB · Affichages: 75

avekash

XLDnaute Nouveau
Re : VBA Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivan

Slt Phlaurent 55

J'ai suivi ton dernier conseil et j'ai pu remplir le tableau que tu m'as proposé via mon userform caisse.
Cependant il y'a un couac lors du transfert des données de la userform vers le tableau au regard du code contenu dans mon userform
Code:
Private Sub CommandButtonCloseCaisse_Click()

'Vide la mémoire du programme des données entrées

Unload UserFormCaisse

'Cacher le programme "Caisse"

UserFormCaisse.Hide

'Affiche le programme

Application.Visible = False
UserFormCotProFac.Show
End Sub

Private Sub CommandButtonEntree_Click()

' Déclaration des variables

Dim CAISSE As Worksheet

' Afficher la feuille si caché

    Set CAISSE = Sheets("GEST_CAISSE")
    If CAISSE.Visible = xlSheetHidden Then
    CAISSE.Visible = xlSheetVisible
    CAISSE.Select
    
    End If

'Transfert de donné vers la feuille Gestion_Caisse

Columns(1).Find("", Sheets("GEST_CAISSE").Range("A2"), xlValues, , 1, 1, 0).Value = TextBoxDate
Columns(2).Find("", Sheets("GEST_CAISSE").Range("B2"), xlValues, , 1, 1, 0).Value = TextBoxLibelle
Columns(3).Find("", Sheets("GEST_CAISSE").Range("C2"), xlValues, , 1, 1, 0).Value = TextBoxObserv
Columns(4).Find("", Sheets("GEST_CAISSE").Range("D2"), xlValues, , 1, 1, 0).Value = TextBoxMontant


'Vider les textboxs
    
TextBoxDate.Value = ""
TextBoxLibelle.Value = ""
TextBoxObserv.Value = ""
TextBoxMontant.Value = ""

'Cacher la feuille après le transfert et la réinitialisation de l'userform "Caisse"

CAISSE.Visible = xlSheetHidden

End Sub

Private Sub CommandButtonSortie_Click()

' Afficher la feuille si caché

Dim CAISSE As Worksheet

    Set CAISSE = Sheets("GEST_CAISSE")
    If CAISSE.Visible = xlSheetHidden Then
    CAISSE.Visible = xlSheetVisible
    CAISSE.Select
    
    End If
    
'Transfert de donné vers la feuille Gestion_Caisse

Columns(1).Find("", Sheets("GEST_CAISSE").Range("A2"), xlValues, , 1, 1, 0).Value = TextBoxDate
Columns(2).Find("", Sheets("GEST_CAISSE").Range("B2"), xlValues, , 1, 1, 0).Value = TextBoxLibelle
Columns(3).Find("", Sheets("GEST_CAISSE").Range("C2"), xlValues, , 1, 1, 0).Value = TextBoxObserv
Columns(5).Find("", Sheets("GEST_CAISSE").Range("E2"), xlValues, , 1, 1, 0).Value = TextBoxMontant
    
'Vider les textboxs
    
TextBoxDate.Value = ""
TextBoxLibelle.Value = ""
TextBoxObserv.Value = ""
TextBoxMontant.Value = ""

'Cacher la feuille après le transfert et la réinitialisation de l'userform "Caisse"

CAISSE.Visible = xlSheetHidden

End Sub

Les données transférées par la suite ne vont pas dans les cellules correspondantes.

ci-joint le fichier explicatif
 

Pièces jointes

  • Brouillon.xlsx
    17.4 KB · Affichages: 62
  • Brouillon.xlsx
    17.4 KB · Affichages: 76
  • Brouillon.xlsx
    17.4 KB · Affichages: 79

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivan

Re-Bonjour

dans le message précédent, je découvre le code et en pièce jointe, le fichier (sans code et sans userform)

Je ne vais pas perdre mon temps à reconstruire un fichier incomplet
De qui se moque-t'on, si la fichier avait été joint à la question initiale, quel gain de temps !!!!!!!

pour le problème rencontré, il suffit de rechercher la première ligne vide en colonne A et 'se servir de cela pour vider les TBox dans la même ligne sans décalage

....... mais pas à la manière des élucubrations ci-dessous
Code:
Columns(1).Find("", Sheets("GEST_CAISSE").Range("A2"), xlValues, , 1, 1, 0).Value = TextBoxDate
Columns(2).Find("", Sheets("GEST_CAISSE").Range("B2"), xlValues, , 1, 1, 0).Value = TextBoxLibelle
Columns(3).Find("", Sheets("GEST_CAISSE").Range("C2"), xlValues, , 1, 1, 0).Value = TextBoxObserv
Columns(4).Find("", Sheets("GEST_CAISSE").Range("D2"), xlValues, , 1, 1, 0).Value = TextBoxMontant
à relire: ma réponse apportée au post#9


à+
Philippe
 
Dernière édition:

avekash

XLDnaute Nouveau
Re : VBA Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivan

Bonjour Phlaurent55

Je vous prie de m'excusez; Je pensais juste que ces éléments(Codes du userformcaisse et fichier xlx du tableau) auraient suffit à clarifier mon problème. Je ne pensais pas vous faire perdre du temps je m'en excuse si ça été le cas.
Toutefois je vous met en pièce jointe jointe la totalité du fichier (Userform + code + fichier xlx du tableau)

Encore merci pour votre disponibilité.

A+
 

Pièces jointes

  • Brouillon avec userformcaisse.xlsm
    28.2 KB · Affichages: 58

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivan

Re-bonjour

le fichier en retour
j'ai supprimé tous les codes de masquage/démasquage pour mon confort perso et me simplifier la tâche lors de mes essais

à+
Philippe
 

Pièces jointes

  • 111.xlsm
    31.6 KB · Affichages: 63
  • 111.xlsm
    31.6 KB · Affichages: 76
  • 111.xlsm
    31.6 KB · Affichages: 84

avekash

XLDnaute Nouveau
Re : VBA Copie de la formule Présente dans la "colonne F" "ligne 3" a la ligne suivan

Re-bonjour

le fichier en retour
j'ai supprimé tous les codes de masquage/démasquage pour mon confort perso et me simplifier la tâche lors de mes essais

à+
Philippe

Bonsoir Phlaurent55

Merci pour l'aide que tu m'apportes sur ce projet. Effectivement sur ton dernier conseil avant que je ne poste le fichier brouillon j'ai avancé dans le sens que tu m'as indiqué et le code que j'ai fait
Code:
Dim CAISSE As Worksheet
Dim Celnvide As Integer

'Transfert de donné vers la feuille Gestion_Caisse

Set CAISSE = Sheets("GEST_CAISSE")
Celnvide = CAISSE.Range("A65536").End(xlUp).Row + 1

CAISSE.Cells(Celnvide, 1).Value = TextBoxDate
CAISSE.Cells(Celnvide, 2).Value = TextBoxLibelle
CAISSE.Cells(Celnvide, 3).Value = TextBoxObserv
CAISSE.Cells(Celnvide, 4).Value = TextBoxMontant
est presque similaire que ce que tu viens de m'envoyer mais n'étant qu'un débutant (j'ai eu une erreur dans la colonne F du Solde affichant #VALEUR) ta réponse est largement meilleur.

Je suis ravi d'apprendre grâce à vous:)

Merci pour tout

A+
 

Discussions similaires

Réponses
12
Affichages
250

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 184
dernier inscrit
Di Martino