Export Feuille Excel en valeur avec cellule fusionnées

Export Feuille Excel en valeur avec cellule fusionnées - VB/VBA/VBS - Programmation

Marsh Posté le 30-01-2013 à 11:36:01    

Bonjour,
 
je recherche à faire une macro pour extraire d'un fichier excel quelques feuilles en valeur afin d'obtenir un extrait du fichier originel.
 
Classeur 1 composé de 4 feuilles
Extrait de la feuille 1 en valeur dans un nouveau classeur Excel idéalement nommé avec la valeur de la case "C1"

 
Je rencontre des difficultés avec 3 choses :
 

  • Ma feuille 1 contient des données filtrés je souhaite que l'extrait ne contiennent que les données affichés
  • Ma feuille 1 contient des mise en page comme des cellules fusionnées, hors la copie de cellule fusionnées semble impossible.
  • Ma feuille 1 dispose d'un celulle "C1" titre basé sur la concaténation de texte ainsi que du nom du filtre appliqué sur ma feuille (récupérer par formule)


Ma formule pour C1 :
 

Citation :

"VAGUE "&(RIGHT(AutoFilter_Criteria(A7);(LEN(AutoFilter_Criteria(A7))-FIND("=";AutoFilter_Criteria(A7)))))&" du "&TEXT(VLOOKUP((RIGHT(AutoFilter_Criteria(A7);(LEN(AutoFilter_Criteria(A7))-FIND("=";AutoFilter_Criteria(A7)))));Créneaux!A2:B20;2;FALSE);"[$-40C]jjjj j mmmm aaaa" )


 
Cette fonction m'affiche "Vague " suivi du nom de filtre de la colonne A contenue dans A7, obtenue par macro (code ci dessous) ainsi que la Date de la Vague correspondant au filtre contenue dans un tableau en feuille "Créneaux"
 
Exemple C1 : VAGUE 3 du dimanche 3 février 2013
 
Code Autofilter :
 

Code :
  1. Function AutoFilter_Criteria(Header As Range) As String
  2. Dim strCri1 As String, strCri2 As String
  3.     Application.Volatile
  4.     With Header.Parent.AutoFilter
  5.         With .Filters(Header.Column - .Range.Column + 1)
  6.             If Not .On Then Exit Function
  7.                 strCri1 = .Criteria1
  8.             If .Operator = xlAnd Then
  9.                 strCri2 = " ET " & .Criteria2
  10.             ElseIf .Operator = xlOr Then
  11.                 strCri2 = " OU " & .Criteria2
  12.             End If
  13.         End With
  14.     End With
  15.     AutoFilter_Criteria = UCase(Header) & ": " & strCri1 & strCri2
  16.      End Function


 
 
Et mon code qui ne fonctionne pas pour exporter en valeur la feuille 1 :
 
 

Code :
  1. Sub SaveSheet()
  2.     ActiveSheet.Copy
  3.     With ActiveSheet.UsedRange
  4.         .Copy
  5.         .PasteSpecial xlValues
  6.         .PasteSpecial xlFormats
  7.     End With
  8.     Application.CutCopyMode = False
  9.     Dim DTAddress As String
  10.     DTAddress = CreateObject("WScript.Shell" ).SpecialFolders("Desktop" ) & Application.PathSeparator
  11.     ActiveWorkbook.SaveAs DTAddress & Range("C1" ) & " " & Format(Date, "mmmmddyyyy" ) & " " & Format(Time, "HHMM" ), FileFormat:= _
  12.     xlNormal
  13. End Sub


 
 
L'erreur est la suivante : Run-time error '1004': Cannot change part of a merge cell.
 
 
Récapitulation du point qui ne bloque : La copie des cellules fusionnées
 
En vous remerciant par avance de toutes remarques ou aide.
 
Cdt,


Message édité par MATAMATA le 30-01-2013 à 11:37:49
Reply

Marsh Posté le 30-01-2013 à 11:36:01   

Reply

Marsh Posté le 30-01-2013 à 15:56:58    

Malheureusement la seule solution pour ça c'est de faire le Merge APRES la copie.
 
Je sais, c'est chiant :D

Reply

Marsh Posté le 30-01-2013 à 16:52:45    

Rhooooooo  :o  
 
Admettons que je vire TOUTES les cellules fusionnées.  
 
J'ai tout de même un message d'erreur sur ma macro SaveSheet :
 

Citation :

"The information cannot be pasted because the Copy area and the paste area are not the same shape. Try one of the following :
 
*click a single cell, and then paste.
*select a rectangle that's the same size and shape, and then paste.


 
Je pense que cela viens du filtre actif sur ma feuille. Une idée pour sauvegarder cette feuille 1 avec données en valeurs et le format sans messages d'erreur ?
 
 
Je précise que la feuille 1 est filtré sur un critère et ce qui m’intéresse c'est d'avoir un export uniquement des infos de ce dis critère.
 

Code :
  1. Exemple :
  2. Feuille 1
  3. Filtre dynamique      |   info
  4. A                          |     toto       
  5. B                          |     tata 
  6. C                          |     tutu 
  7. D                          |     titi 
  8. A                          |     toto1 
  9. B                          |     toto2 
  10. C                          |     toto3
  11. D                          |     toto4   
  12. je filtre sur A et utilise ma macro pour obtenir une feuille contenant uniquement :
  13. A                          |     toto   
  14. A                          |     toto1


 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed