Tri dynamique impossible avec une matrice ?

Regueiro

XLDnaute Impliqué
Bonsoir le Forum
Félicitations à BrunoM45 pour ces 7K et merci encore à lui pour ces précieux Conseils.

Sur ma feuille 0. Récap j'ai un tri dynamique.
Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 And Target.Count = 1 Then
nom = Target
[E8:I36].Sort key1:=[E8]
[E:E].Find(what:=nom).Select
End If
End Sub
Mais ce code ne marche pas ?
J'ai en E8:E36 une formule matricielle.
Code
=conso3D("E19:E100";nf)
Est-ce que le problème vient de cela ?
Je peux vous joindre le fichier mais assez lourd ?
Merci de votre Aide
A+
 

MichD

XLDnaute Impliqué
Re : Tri dynamique impossible avec une matrice ?

Bonjour,

As-tu essayé comme ceci :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim X As Long
X = Application.Calculation
If Target.Column = 5 And Target.Count = 1 Then
    Application.Calculation = xlCalculationManual
    nom = Target
    Range("E8:I36").Sort key1:=[E8]
    Range("E:E").Find(what:=nom, LookIn:=xlValues, LookAt:=xlWhole).Select
    Application.Calculation = X
End If
End Sub
 

MichD

XLDnaute Impliqué
Re : Tri dynamique impossible avec une matrice ?

Bonjour,

tu aurais pu débuté par expliquer ceci : =conso3D("E19:E100";nf)

As-tu essayé comme ceci :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim X As Long
X = Application.Calculation
If Target.Column = 5 And Target.Count = 1 Then
    Application.Calculation = xlCalculationManual
    nom = Target
    Range("E8:I36").Sort key1:=[E8]
    Range("E:E").Find(what:=nom, LookIn:=xlValues, LookAt:=xlWhole).Select
    Application.Calculation = X
End If
End Sub
 

Regueiro

XLDnaute Impliqué
Re : Tri dynamique impossible avec une matrice ?

Bonsoir MichD

Je vous joint mon fichier
Free - Envoyez vos documents

Il faut aller sur le fichier Prog Devis.
L'autre fichier me sert de BDD avec connection.
Il faut modifier la connection dans le fichier Prog Devis UserForm1
Option Explicit
' Définir le chemin d'accès et le fichier en constante
'Dim Répertoire As String
Const Répertoire As String = "C:\0. PROGRAMME JRE\BDD DIVERS 2012\"
Const Fichier As String = "BDD MSIT 2012.xlsx"

Ensuite sur le fichier ProgDevis, il y un fichier d'aide pour l'utilisation du programme.
Dans l'onglet 0.Récap, je veux gérer les prix unitaires depuis La Récap Générale.
Mais chaque fois que je rajoute une donnée dans les Onglets 0.Artxxx
Le prix unitaire en Colonne I n'est pas trié correctement.
Je ne sais pas si c'est clair.
Sinon je suis encore disponible longtemps, car j'ai plein de petit problème à régler ( Voir Fichier AIDE )
Merci
A+
 

MichD

XLDnaute Impliqué
Re : Tri dynamique impossible avec une matrice ?

Désolé, mais je crois qu'il faut s'inscrire... ce n'est pas pour moi!

En plus des facilités de ce site qui permet d'envoyer des fichiers avec un clic en mode avancé,
tu peux utiliser cette adresse Cjoint.com au besoin.
 

MichD

XLDnaute Impliqué
Re : Tri dynamique impossible avec une matrice ?

à cause de ceci : =conso3D("E19:E100";nf) dans une des colonnes de la plage

Tu ne peux pas déplacer le contenu des cellules. En conséquence, tu ne peux pas "trier" (Sort)
la plage de cellules mais tu peux effectuer des filtres automatiques car le contenu des
cellules ne change pas de place, seules les lignes ne répondant pas au critère sont masquées.
 

Regueiro

XLDnaute Impliqué
Re : Tri dynamique impossible avec une matrice ?

Bonsoir à tous.
MichD Merci de ta réponse.
Donc pas possible :mad:

Tu n'aurais pas une solution pour contourner ce probléme ?
Car je dois pouvoir gérer mes prix unitaires depuis la Feuille 0.Récap

A+
 

MichD

XLDnaute Impliqué
Re : Tri dynamique impossible avec une matrice ?

une solution pour contourner ce probléme

Une alternative si cela t'intéresse...
Tu pourrais copier tout le tableau de la feuille "0.Récap" vers une nouvelle feuille (seulement les données) et
non les formules. Libre à toi d'effectuer le filtre que tu désires sur la colonne de ton choix.
 

Regueiro

XLDnaute Impliqué
Re : Tri dynamique impossible avec une matrice ?

Bonsoir le Forum
Merci à MichD pour son alternative
J'ai repris ce code sur ce site.
Je l'ais adapter pour copier les données sur la même feuille o2 et non pas recopier le tout sur une 3ème feuille
Il copie les données de 0.Récap dans 0.Prix Unitaires ( ma Nouvelle Feuille )
Mais j'ai un problème avec la copie dans cette même feuille.
J'aimerais copier uniquement les valeurs.
Code
Sub Macro1()
Dim o1 As Object 'déclare la variable o1 (Onglet 1)
Dim o2 As Object 'déclare la variable o1 (Onglet 2)
Dim o3 As Object 'déclare la variable o1 (Onglet 3)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim r As Range 'déclare la variable r (Recherche)
Dim dest As Range 'déclare la variable dest (Cellule de DESTination)

Set o1 = Sheets("0.Récap") 'définit l'onglet o1
Set o2 = Sheets("0.Prix Unitaires") 'définit l'onglet o2
Set o3 = Sheets("0.Prix Unitaires") 'définit l'onglet o3
'supprime les anciennes données
If o3.Range("E8").Value <> "" Then o3.Range("E8").CurrentRegion.Offset(1, 0).Resize(o3.Range("E8").CurrentRegion.Rows.Count - 1).Clear
dl = o1.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne dl de la colonne A de l'onglet 01
Set pl = o1.Range("E8:G36" & dl) 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
Set r = o2.Columns(1).Find(cel.Value, , xlValues, xlWhole) 'définit la recherche r (recherche cel dans la colonne A de l'onglet o2)
If r Is Nothing Then 'condition si il n'existe aucune occurrence
Set dest = o3.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la celluel de destination
'o1.Rows(cel.Row).Copy dest 'A remplacer par
o1.Rows(cel.Row).Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'copy la ligne dans dest
End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
o3.Activate 'active l'onglet "Sheet3"
End Sub
MErci de votre Aide
 

Regueiro

XLDnaute Impliqué
Re : Tri dynamique impossible avec une matrice ?

Bonsoir le Forum
J'ai trouver une autre alternative avec un code sur le site de Boigontier.
Code
Sub MajTph()
Set f1 = Sheets("0.Récap")
Set f2 = Sheets("0.Prix Unitaires")
Set d1 = CreateObject("Scripting.Dictionary")
For Each C In f2.[E8:G36]
If C.Text <> "" Then d1(C.Text) = ""
Next C
Set d2 = CreateObject("Scripting.Dictionary")
For Each C In f1.[E8:G36]
If C.Text <> "" Then
If Not d1.exists(C.Text) Then d2(C.Text) = ""
End If
Next C
If d2.Count > 0 Then f2.[E8].End(xlUp).Offset(1).Resize(d2.Count, 1) = Application.Transpose(d2.Keys)


End Sub

'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
Je n'arrive pas à adapter son code pour faire uniquement un coller les valeurs.
Merci de votre Aide
A+
 

Regueiro

XLDnaute Impliqué
Re : Tri dynamique impossible avec une matrice ?

Bonjour à Tous
Un petit UP sur mon post N° 13
Je suis planter depuis quelques jours et je n'arrive pas
à modifier la formule.
Je dois copier uniquement les valeurs en ligne ( 3 colonnes par lignes )
et non pas les transposés, comme le fiat actuellement la formule.
Elle copie toutes les données sur la même colonne à la suite.
Merci de votre Aide.
A+
 

Statistiques des forums

Discussions
312 305
Messages
2 087 089
Membres
103 464
dernier inscrit
Inconnu2