Enregistrement de feuilles avec incrémentation

C

CactusX

Guest
Bonjour le Forum,

Je sèche, bien qu'il pleuve, sur un problème d'enregistrement de classeurs.

Dans l'application jointe l'enregistrement est réalisé en sélectionnant
un N° de ligne en B2 puis en cliquant sur le bouton "Créer le Classeur".

Si le classeur n'existe pas
création d'un classeur nommé par la valeur de la cellule correspondant
à l'intersection de la colonne B et du N° de ligne saisie en B2.
la première feuille se nomme "Récapitulatif" sans rien dedans
la seconde se nomme "1" et contient toutes les cellues de la ligne (B2)
else
si le classeur existe
ouverture du classeur
la feuiile à créer se nomme comme la dernière qui existe dans le classeur
+1 et contient toutes les cellles de la ligne (B2).
endif


Merci à vous pour vos suggestions.
 

Pièces jointes

  • Essai10B.xls
    22 KB · Affichages: 63
M

Minick

Guest
Salut,

Voi la Piece jointe et si ca te convien

@+

Minick

PS: Pense à Zipper T pieces jointes
 

Pièces jointes

  • Essai10B.zip
    12 KB · Affichages: 25
  • Essai10B.zip
    12 KB · Affichages: 19
  • Essai10B.zip
    12 KB · Affichages: 22
C

CactusX

Guest
Bonsoir Minick, le Forum,

Bien reçu et 100% conforme au cahier des charges.

L'adjonction de : ActiveWorkbook.Close en fin de routine permet la fermeture des fichiers créés (ce n'était pas demandé).

Merci à toi, pour l'efficacité et la rapidité de ta réponse.

A+
 
@

@+Thierry

Guest
Re: Fonction SPLIT sur un Caractère "' et problème avec SEARCH ...

SAlut CactusX, Minick, le Forum

Huum un remède, oui oui, tu mets le chemin avec les répertoires dans une cellule adjacente !!! (lol)

Bon j'ai trifouillé pendant un non moment et je ne suis pas content du résultat...(enfin oui, mais bon !!)

Je maîtrise bien la Function Split (attention pas glop avec Excel 97) mais comme elle me construit une Array dynamic, il me faut bien le nombre d'occurrences et donc compter les slash !!!

Bien sûr j'ai pensé à Ubound sur la Tableau Retourné par Split, mais je déteste ne pas pouvoir arriver à ce que je veux !!

Je veux tout simplement savoir par VBA, combien de fois un caractère se répète dans une String... Ce doit être évident mais la je zappe un truc... Je vous laisse voir comment je me suis em.... pour ce truc lol !!

Voilà donc si vous avez des idée... Je suis preneur ! Mais sinon Cactuxs, une fois que tu auras testé tu peux effacer et re-activer les parties de codes comme indiqué et çà va rouler pour toi ;-)

Bonne Nuit à tous et toutes
@+Thierry
 

Pièces jointes

  • Search_N_Split.zip
    19.7 KB · Affichages: 20
M

Minick

Guest
Salut,

houla houla , tu t'ais trituré la tete @+Thierry.

J'ai pas regardé a fond ton code mais j'ai trouvé un truc tous simple (enfin ca vous devez l'savoir maintenant c tjrs simpliste avec moi :eek:) )
Pi en plus j'sors du resto alors g pas tou mon neurone :eek:)

@+
Minick
 

Pièces jointes

  • Essai10B.zip
    12 KB · Affichages: 27
  • Essai10B.zip
    12 KB · Affichages: 19
  • Essai10B.zip
    12 KB · Affichages: 20
@

@+Thierry

Guest
Bonsoir Minick, re CactusX, le Forum

Oui oui je suis toujours en train de chercher, c'est comme çà que j'ai appris le peu que je sais ;-)

Par Contre, ce n'est pas compliqué de retourner le nom "net" d'un fichier dans une String Path, car dans cette exemple précis, tu peux jouer avec : (NomClasseur = ActiveWorkbook.Name) mais ce n'est pas toujours le cas que tu aies besoin d'ouvrir le classeur... Un macro comme ceci le fait et est une solution simple aussi (ce que j'ai mis en ommentaire prèt à l'emploi dans le fichier ci-dessus) :

Sub ExtractionDansStringPath()
Dim NomFichierComplet As String, NomFichierSeul As String

NomFichierComplet = "C:\Mes Document\Mes Factures\Mes Factures Payées\Archive\Fichier de Thierry.xls"

Contenu = Split(NomFichierComplet, Chr(92))
X = UBound(Contenu)
NomFichierSeul = Contenu(X)

MsgBox "le nom du fichier est : " & NomFichierSeul & vbCrLf & _
"Le Nom Complet est : " & NomFichierComplet

Exit Sub

Non, là où, comme tu dis "tu t'aies trituré la tete" (lol c'est vrai), c'est pour compter combien de slash il y a dans la string "NomFichierComplet" aurait-tu (ou quelqu'un) la solution ? car là je rame !!

Sinon une petite chose en passant, car tu as l'air de ne pas trop aimer déclarer tes variables ;-)
quand tu fais ceci : Dim Ligne, NbrFeuil As Integer
Ligne est déclarée Variant tacitement...

De plus, Integer est un peu grand pour un nombre de feuille, à moins que CactusX dépasse 255... Quand à "Ligne" il n'y a 4,5 et 6...

Sinon j'espère que tu n'auras pas de mal de tête après ce resto Minick :)
Bonne nuit
@+Thierry
 
C

CactusX

Guest
Bonjour le Forum, Thierry, Minick,

Ouuuulalala !!!

Ma version d'XL ne split pas :) => Pas de budget pour acheter XL200x.

La solution proposée par Minick convient.

"ThisWorkbook.ActiveSheet.Rows(Ligne).Copy" réalise bien ce que je souhaitais, à savoir une copie de toutes les cellules de la ligne en question.

Mais depuis, de nombreuses infos se sont adjointes sur cette même ligne et maintenant, il faudrait pouvoir copier uniquement que de A4 à C4 lorque l'on a 4 en B2 et non la ligne 4 comme actuellement.

Merci à vous et Bonne journée à tous.


P.S. : Pour info. l'application complète contient 64 colonnes par 1519 lignes au maximum.
 
@

@+Thierry

Guest
Idem Sans SPLIT, et comptage d'occurrence d'un caractère dans String avec MID !

Bonjour CactusX, Minick, le Forum

Youpi, j'ai trouvé, et dans la foulée sans utiliser Split pour les "heureux" possesseurs d'Excel 97 !!

Et je compte mes "Anti Slash", par contre faut fait deux passage, en 1 seul je ne peux faire l'extraction du nom du fichier seul ET le comptage des "\"... Mais bon j'ai bien cherché et j'ai trouvé ;-) !!!


Sub ExtractionDansStringPath_SansSplit()
Dim NomFichierComplet As String, NomFichierSeul As String, contenu
Dim Y As Byte, X As Integer, S As Integer, Slash As Byte

NomFichierComplet = "C:\Mes Document\Mes Factures\Mes Factures Payées\Archive\Thierry.xls"

Y = Len(NomFichierComplet)
For X = Y To 1 Step -1
If Mid(NomFichierComplet, X, 1) <> Chr(92) Then
NomFichierSeul = Mid(NomFichierComplet, X, 1) & NomFichierSeul
Else
Exit For
End If
Next X

For S = Y To 1 Step -1
If Mid(NomFichierComplet, S, 1) = Chr(92) Then
Slash = Slash + 1
Else
End If
Next S

MsgBox "Le nom du fichier seul est :" & vbTab & vbTab & NomFichierSeul & vbCrLf & _
"Le Nom Complet avec Chemin est :" & vbCrLf & NomFichierComplet & vbCrLf & _
"Il y a : " & Slash & """ / "" Slash," & vbTab & vbTab & "Soit " & Slash - 1 & " répertoires"

End Sub

Heureux !!!

Bon Dimanche à Tous et Toutes
@+Thierry
 
C

CactusX

Guest
Bonsoir Thierry, Minick et le Forum,

Heureux, surtout pour la non utilisation du Split.

Tout de même plus limpide ce code :)


La question du jour porte sur le moyen d'enregistrer, toujours à partir de la même application, une macro nommée "MacroCopie" contenue dans le module 1 du classeur "Essai10B.XLS" dans le fichier nouvellement créé avant sa fermeture.

Ceci en vue de la génération automatique du rapport, dans la feuille "Récapitulaif", du contenu de toutes les feuilles du classeur "c:\mes documents\E10B.xls" de la ligne 6 par exemple.

...
ThisWorkbook.ActiveSheet.Rows(Ligne).Copy
Workbooks(NomClasseur).Sheets(NbrFeuil + 1).Range("A1").Select
ActiveSheet.Paste
==>>> ???
ActiveWorkbook.Close SaveChanges:=True
...

Merci à vous.

A+
 
@

@+Thierry

Guest
Salut CactuX, Minick, le fil, le Forum

Si tu veux copier une macro vers une autre classeur regarde ce fil :

=>Lien supprimé il y a un code...

Sinon il y a aussi un moyen d'importer un Module.bas directement dans le classeur...

Sub Import()
Dim Modulos As String
Modulos = "C:\Mes documents\Module1.bas"
Workbooks("Classeur.xls").VBProject.VBComponents.Import Modulos
End Sub

Bonne Soirée
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
313 091
Messages
2 095 193
Membres
106 217
dernier inscrit
gaelito973