Microsoft 365 SI cellule vide dans la colonne A

Moreno076

XLDnaute Impliqué
Bonsoir le forum

Je souhaiterais adapter cette formule.
Si dans la colonne A case vide alors on applique cette formule et on ajoute en plus quantité de la colonne I sinon on laisse son contenu.
SI possible avec une petite variante, si 'RLR'!A:A = date du jour alors écrire "RECEPTIONNEE"

Range("A2").Formula = "=IFERROR(INDEX('RLR'!A:A,MATCH(B2,'RLR'!C:C,0)),"""")"
Range("A2:A" & Derlg).FillDown

Merci
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Je le supposais, c'est pourquoi je le proposai comme ça, même pour le fichier X3 où les données commencent à la ligne 7 et non la 2 comme les autres. On dépose tout ce qu'il y a, tel que c'est, y compris les titres.
 

Moreno076

XLDnaute Impliqué
J'ai fait ça dés le départ

1583581225679.png

Ce n'est pas bon?
 

Dranreb

XLDnaute Barbatruc
Faites des essais, vous verrez bien
Le message au début pourrait être transformé en message de confirmation si vous voulez, avec réponse Oui/Non possible.
Laissez quand même l'instruction d'effacement des cellules au début, au cas où il y aurait moins de lignes qu’auparavant. Sinon celles en plus de la dernière fois demeureraient.
 

Dranreb

XLDnaute Barbatruc
Avez vous ajouté devant l'instruction WshCible.Cells.ClearContents ?
peut être le nouveau fichier est-il vide ?
Essayez comme ça :
VB:
Sub VerserDonnées(ByVal WshCible As Worksheet, ByVal WbkSource As Workbook)
   WbkSource.Activate
   WbkSource.Worksheets(1).Activate
   ActiveSheet.UsedRange.Select
   If MsgBox("Le contenu présentement sélectionné doit-il remplacer" _
      & vbLf & "celui de la feuille ""[" & ThisWorkbook.Name & "]" & WshCible.Name & """ ?", _
      vbYesNo, "VerserDonnées") = vbNo Then Exit Sub
   WshCible.Cells.ClearContents
   Selection.Copy Destination:=WshCible.[A1]
   End Sub
 

Moreno076

XLDnaute Impliqué
Avez vous ajouté devant l'instruction WshCible.Cells.ClearContents ?
peut être le nouveau fichier est-il vide ?
Essayez comme ça :
VB:
Sub VerserDonnées(ByVal WshCible As Worksheet, ByVal WbkSource As Workbook)
   WbkSource.Activate
   WbkSource.Worksheets(1).Activate
   ActiveSheet.UsedRange.Select
   If MsgBox("Le contenu présentement sélectionné doit-il remplacer" _
      & vbLf & "celui de la feuille ""[" & ThisWorkbook.Name & "]" & WshCible.Name & """ ?", _
      vbYesNo, "VerserDonnées") = vbNo Then Exit Sub
   WshCible.Cells.ClearContents
   Selection.Copy Destination:=WshCible.[A1]
   End Sub
En fait je fais ok pour les feuilles présentées sans vérifier et en fait les feuilles présentées ne correspondent pas. feuilles présentées rupture c est extraction reappro
 

Dranreb

XLDnaute Barbatruc
Je ne vois pas comment c'est possible.
Essayez comme ça :
VB:
Sub VerserDonnées(ByVal WshCible As Worksheet, ByVal WbkSource As Workbook)
   Dim RngSource As Range
   Set RngSource = WbkSource.Worksheets(1).UsedRange
   Application.Goto RngSource
   If MsgBox("Actuellement sélectionné :" & vbLf & """" & RngSource.Address(False, False, xlA1, True) & """." _
      & vbLf & "Ce contenu sélectionné doit-il remplacer celui de la feuille :" _
      & vbLf & """[" & ThisWorkbook.Name & "]" & WshCible.Name & """ ?", _
      vbYesNo, "VerserDonnées") = vbNo Then Exit Sub
   WshCible.Cells.ClearContents
   RngSource.Copy Destination:=WshCible.[A1]
   End Sub
 

Moreno076

XLDnaute Impliqué
Ca fait pareil je vous joint le fichier avec les captures d 'écran j'ai bien repris le dernier fichier que vous m'avez envoyé et j'ai modifié la macro
 

Pièces jointes

  • Gigogne6Moreno076.xlsm
    115.4 KB · Affichages: 3
  • P1.JPG
    P1.JPG
    126.4 KB · Affichages: 4
  • P2.JPG
    P2.JPG
    105.8 KB · Affichages: 4
  • P3.JPG
    P3.JPG
    107 KB · Affichages: 5
  • P4.JPG
    P4.JPG
    98.3 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
D'haaaaacord !
La procédure précédente doit être corrigée comme suit :
Code:
Sub ChargementDonnées()
   Dim Chemin As String, RngFic As Range, TFic(), C As Long, NomFic As String, DatFic As Date, WbkDon As Workbook
   Chemin = Me.[CheminDonnées].Value
   Set RngFic = Me.[TabFichiers]: TFic = RngFic.Value
   For C = 2 To 5
      If TFic(3, C) < TFic(6, C) Then
      Set WbkDon = Workbooks.Open(Chemin & TFic(5, C))
      Select Case C
         Case 2: VerserDonnées WshRuptur, WbkDon
         Case 3: VerserDonnées WshExtRea, WbkDon
         Case 4: VerserDonnées WshRécept, WbkDon
         Case 5: VerserDonnées WshCdeCX3, WbkDon
         End Select
      WbkDon.Close SaveChanges:=False
      If VersementOK Then
         TFic(2, C) = TFic(5, C)
         TFic(3, C) = TFic(6, C)
         TFic(4, C) = Now
         End If
      Next C
   End Sub
J'avais mis Case 1 2 3 4 au lieu de 2 3 4 5, oubliant que C était le numéro de colonne dans TFic, et non le numéro de la source, qui commence à la colonne 2

Tout ça ce sont des choses que je ne peux pas tester, n'est-ce pas …
 

Moreno076

XLDnaute Impliqué
D'haaaaacord !
La procédure précédente doit être corrigée comme suit :
Code:
Sub ChargementDonnées()
   Dim Chemin As String, RngFic As Range, TFic(), C As Long, NomFic As String, DatFic As Date, WbkDon As Workbook
   Chemin = Me.[CheminDonnées].Value
   Set RngFic = Me.[TabFichiers]: TFic = RngFic.Value
   For C = 2 To 5
      If TFic(3, C) < TFic(6, C) Then
      Set WbkDon = Workbooks.Open(Chemin & TFic(5, C))
      Select Case C
         Case 2: VerserDonnées WshRuptur, WbkDon
         Case 3: VerserDonnées WshExtRea, WbkDon
         Case 4: VerserDonnées WshRécept, WbkDon
         Case 5: VerserDonnées WshCdeCX3, WbkDon
         End Select
      WbkDon.Close SaveChanges:=False
      If VersementOK Then
         TFic(2, C) = TFic(5, C)
         TFic(3, C) = TFic(6, C)
         TFic(4, C) = Now
         End If
      Next C
   End Sub
J'avais mis Case 1 2 3 4 au lieu de 2 3 4 5, oubliant que C était le numéro de colonne dans TFic, et non le numéro de la source, qui commence à la colonne 2

Tout ça ce sont des choses que je ne peux pas tester, n'est-ce pas …

Pas de soucis le tout c'est de trouver.

Ca ne fonctionne pas là et en bas du coup je remets simplement la ligne? Si vous voulez on peut se créer un chemin commun?
 

Dranreb

XLDnaute Barbatruc
Ah… VersementOK est une variable globale Private que j'ai ajoutée pour ne pas corriger les lignes 2 à 4 si les données n'ont pas été versées.
Je joins le fichier ce sera plus simple.
 

Pièces jointes

  • GigogneMoreno076.xlsm
    120.8 KB · Affichages: 3

Discussions similaires

Réponses
9
Affichages
146

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal