Insérer texte dans colonne

nanie13 -  
 eriiic -
Bonjour, Bonjour,

Je suis débutante et depuis quelques jours je patauge.....
Quelqu'un pourrait-t-il m'aider s'il vous plait ?
Dans ma feuille "Facture 1"
Mon tableau possède 4 colonnes de 6 lignes

Colonne RS = 1ère avance forfaitaire
Colonne TU = 2ème avance forfaitaire
Colonne VW = 3ème avance forfaitaire
Colonne XY = 4ème avance forfaitaire

Je souhaiterais que mon texte s'insère automatiquement
à la bonne place, selon la première cellule vide
Je joins à cette demande ma macro.
Merci

Sub AVANCE_FORFAITAIRE_ACQUITEE()

Dim Banque As String
Dim Emetteur As String
Dim Numéro_Chèque As String
Dim Date_Chèque As String
Dim Numéro_Remise As String
Dim Date_Remise As String

Banque = InputBox("saisir le nom de la banque")
Emetteur = InputBox("saisir le nom de l'emetteur de chèque :")
Numéro_Chèque = InputBox("saisir le numéro de chèque :")
Date_Chèque = InputBox("saisir la date du chèque :")
Numéro_Remise = InputBox("saisir le numéro de remise du chèque :")
Date_Remise = InputBox("saisir la date de remise :")

' 1ERE AVANCE FORFAITAIRE
' Insérer données dans la feuille facture
Windows("Mes Factures.xls").Activate
Range("RS33") = Banque
Range("RS34") = Emetteur
Range("RS35") = Numéro_Chèque
Range("RS37") = Date_Chèque
Range("RS38") = Numéro_Remise
Range("RS39") = Date_Remise
' Insérer données dans la feuille Avance forfaitaire
Windows("Avance Forfaitaire.xls").Activate
Range("D49") = Banque
Range("D50") = Emetteur
Range("D51") = Numéro_Chèque
Range("D53") = Date_Chèque
Range("D54") = Numéro_Remise
Range("D55") = Date_Remise
' Copier le montant du chèque sur la feuille facture
Range("E25:M25").Select
Selection.Copy
Windows(" Mes Factures.xls").Activate
Range("R36:S36").Select
ActiveSheet.Paste Link:=True
Range("R36:S36").Select
Application.CutCopyMode = False
Selection.Copy
Range("R36:S36").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

' 2EME AVANCE FORFAITAIRE
' Insérer données dans facture
Windows("Mes Factures.xls").Activate
Range("TU33") = Banque
Range("TU34") = Emetteur
Range("TU35") = Numéro_Chèque
Range("TU37") = Date_Chèque
Range("TU38") = Numéro_Remise
Range("TU39") = Date_Remise
' Insérer données dans Avance forfaitaire
Windows("Avance Forfaitaire.xls").Activate
Range("D49") = Banque
Range("D50") = Emetteur
Range("D51") = Numéro_Chèque
Range("D53") = Date_Chèque
Range("D54") = Numéro_Remise
Range("D55") = Date_Remise
' Copier le montant du chèque sur la feuille facture
Range("E25:M25").Select
Selection.Copy
Windows("Factures Belmas.xls").Activate
Range("R36:S36").Select
ActiveSheet.Paste Link:=True
Range("R36:S36").Select
Application.CutCopyMode = False
Selection.Copy
Range("R36:S36").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

' AVANCE FORFAITAIRE 3
' Insérer données dans facture
Windows("Mes Factures.xls").Activate
Range("VW33") = Banque
Range("VW34") = Emetteur
Range("VW35") = Numéro_Chèque
Range("VW37") = Date_Chèque
Range("VW38") = Numéro_Remise
Range("VW39") = Date_Remise
' Insérer données dans Avance forfaitaire
Windows("Avance Forfaitaire Belmas.xls").Activate
Range("D49") = Banque
Range("D50") = Emetteur
Range("D51") = Numéro_Chèque
Range("D53") = Date_Chèque
Range("D54") = Numéro_Remise
Range("D55") = Date_Remise
' Copier le montant du chèque sur la feuille facture
Range("E25:M25").Select
Selection.Copy
Windows("Factures Belmas.xls").Activate
Range("R36:S36").Select
ActiveSheet.Paste Link:=True
Range("R36:S36").Select
Application.CutCopyMode = False
Selection.Copy
Range("R36:S36").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

' AVANCE FORFAITAIRE 4
' Insérer données dans facture
Windows("Mes Factures.xls").Activate
Range("XY33") = Banque
Range("XY34") = Emetteur
Range("XY35") = Numéro_Chèque
Range("XY37") = Date_Chèque
Range("XY38") = Numéro_Remise
Range("XY39") = Date_Remise
' Insérer données dans Avance forfaitaire
Windows("Avance Forfaitaire Belmas.xls").Activate
Range("D49") = Banque
Range("D50") = Emetteur
Range("D51") = Numéro_Chèque
Range("D53") = Date_Chèque
Range("D54") = Numéro_Remise
Range("D55") = Date_Remise
' Copier le montant du chèque sur la feuille facture
Range("E25:M25").Select
Selection.Copy
Windows("Factures Belmas.xls").Activate
Range("R36:S36").Select
ActiveSheet.Paste Link:=True
Range("R36:S36").Select
Application.CutCopyMode = False
Selection.Copy
Range("R36:S36").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

' Message si plus de 4 avances
MsgBox "IL N'Y A QUE 4 AVANCES DE PREVUE"

ActiveWorkbook.Save
End Sub
Configuration: Windows XP
Internet Explorer 7.0

3 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    pour atteindre la dernière cellule occupée de la colonne B:
    [B65536].End(xlUp).Select
    et donc pour la suivante vide:
    [B65536].End(xlUp).Offset(1, 0).Select

    Une fois que tu as ta 1ère référence utilise plutôt .offset(ligne,colonne) pour atteindre les cellules suivantes. Par exemple .offset(4,0).value te donne la valeur située 4 lignes plus bas, même colonne

    Es-tu sûre de devoir utiliser les colonnes RS, TU, VW et XY ?
    Ca ne serait pas plutôt R et S, T et U,... ?
    Car elles paraissent bien éloignées et ne se suivent pas...

    Je n'ai pas regardé le détail de ton code mais j'ai l'impression que tu écris 4 fois la même chose (aux references près). Ca ne serait pas mieux de stocker dans une cellule le n° de l'avance ? Ensuite t'en servir pour les .offset (tu peux mettre un calcul dedans ex .offset(n*6,0)) et pour tester si les 4 sont atteintes

    Et si tu veux qu'on se rende mieux compte met ton fichier sur www.cijoint.fr et colle le lien ici
    eric
    0
    1. nanie13
       
      Bonjour,
      Je vous remercie pour votre réponse.

      Je viens de mettre mon fichier sur www.ci-joint.fr

      http://www.cijoint.fr/cij20989200627443.xls

      Merci pour votre aide

      Anne Marie
      0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Il n'y a qu'un seul fichier d'une seule feuille (avec plein de #REF dedans..) et pas une seule macro. Normal ?
    Difficile de se faire une idée.
    Par contre je vois plein de cellules fusionnées. Est-ce obligatoire ou c'est ton choix ? Souvent ça complique inutilement les macros VBA
    Par exemple 4 cellules (2x2) pour inscrire juste un 1... Tu peux faire un retour à ligne dans une cellule avec ALT+Entrée (=> plus qu'une ligne), et 2 colonnes sont-elles vraiment nécessaires ?
    eric
    0
    1. nanie13
       
      Bonjour,

      Je suis débutante et ce n'est vraiment pas facile pour moi.

      Mon facturier se compose comme suit :

      Dossier : Factures et Devis

      1er classeur : Mes Données
      - Feuil1 = Données des factures ou des devis

      2ème classeur : Mes Clients
      - Feuil1 = Noms et adresses des clients nouveaux et anciens

      3ème classeur : Mes Factures
      - Feuil1 = Facture 1 page + facture acquittée
      - Feuil2 = Facture 2 pages + facture acquittée
      - Feuil3 = Facture 3 pages + facture acquittée
      - Feuil4 = Facture 4 pages + facture acquittée
      - Feuil5 = Facture 5 pages + facture acquittée
      - Feuil6 = Tableau récapitulatif
      - Les feuilles suivantes sont les factures de l’année

      4ème classeur : Mes Devis
      - Feuil1 = Devis 1 page
      - Feuil2 = Devis 2 pages
      - Feuil3 = Devis 3 pages
      - Feuil4 = Devis 4 pages
      - Feuil5 = Devis 5 pages
      - Feuil6 = Tableau récapitulatif
      - Les feuilles suivantes sont les devis de l’année

      Il n’y a aucun problème entre les macros, et la mise en page ou les cellules fusionnées.
      Les factures et les devis s’insèrent automatiquement, avec le nom, l’adresse du client, le numéro de facture, la date et les données.
      Les devis peuvent se transformer en facture.
      Tout cela fonctionne sans problème.

      Je bloque, au niveau des avances forfaitaires ou acomptes, dans ma facture acquittée. J’aimerais que le texte s’insère automatiquement dans la cellule, sans devoir renseigner si c’est la 1ère, la 2ème, la 3ème ou la 4ème, juste par rapport à la cellule vide, soit pour le :
      - 1er Acompte = colonne ("RS33")
      - 2ème Acompte = colonne ("TU33")
      - 3ème Acompte = colonne ("VW33")
      - 4ème Acompte = colonne ("XY33")

      Exemple :

      Cette macro est dans mon premier message : « Sub AVANCE_FORFAITAIRE_ACQUITEE () »

      P : Q R : S T : U V : W X : Y Z : AA
      32 ACOMPTES 1 2 3 4 Total
      33 Banque
      34 Emetteur
      35 N° Chèque
      36 Montant
      37 Date
      38 N° Remise
      39 Date


      Voilà ce que j’aimerais rajouter à ma macro, mais je ne sais comment le formuler

      Si ("RS33") est vide entrez les données, sinon entrez les données dans ("TU33")
      Et si ("TU33") est vide entrez les données, sinon entrez les données dans ("VW33")
      Et si ("VW33") est vide entrez les données, sinon entrez les données dans ("XY33")

      Merci par avance
      0
  3. eriiic
     
    Bonsoir nanie13,

    je crois que c'est ça que tu veux

    Sub nbAvance()
    Dim fini As Boolean, nbAvance As Long
    fini = False: nbAvance = 0
    'Range("R33").Select
    While Not fini
    If ActiveCell.Value = "" Then
    fini = True
    Else
    ActiveCell.Offset(0, 2).Select
    nbAvance = nbAvance + 1
    End If
    Wend
    If nbAvance = 4 Then
    ActiveCell.Offset(0, -2).Select
    MsgBox ("IL N'Y A QUE 4 AVANCES DE PREVUE")
    End If
    End Sub

    il faut qu'à l'appel la 1ère cellule de saisie soit sélectionnée, là je te l'ai mise en commentaire
    eric
    0