Cellule bougée <---> Résultat qui suit....

  • Initiateur de la discussion Initiateur de la discussion WEIDER
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

WEIDER

XLDnaute Impliqué
Bonjour à toutes et tous,

Pouvez-vous répondre à ma question s’il vous plait, certainement très simple pour vous…

Tout est dit dans mon fichier joint.

Mille mercis à vous,

Amicalement,

WEIDER
 

Pièces jointes

Bonjour WEIDER, le forum,

Il y a des cellules fusionnées en colonne G et H de "Nomenclature", avec elles tout tri est impossible.

Il faut donc les défusionner avant toute chose, cela se fait facilement par macro.

Après, toujours par macro, on peut nommer les cellules en colonne G.

Fichier joint.

A+.
 

Pièces jointes

Re,

Si le seul but est de renseigner les colonnes A:F des feuilles "1", "2" etc... pas besoin de formules !!!

C'est alors relativement simple avec cette macro dans ThisWorkbook :
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim nom$, s As Boolean, r As Range, n, v$, i
nom = Sh.Name
If Val(nom) = 0 Then Exit Sub
s = Me.Saved 'mémorise l'état
Application.ScreenUpdating = False
Sh.[O4] = ""
Sh.[T5] = Date 'date du jour
Sh.[AA:AB] = "" 'RAZ des colonnes auxiliaires du comptage pour repérer les erreurs
On Error Resume Next
Set r = Sheets("Nomenclature").[L:L].SpecialCells(xlCellTypeConstants)
On Error GoTo 0
If Not r Is Nothing Then
  For Each r In r
    If CStr(r) = nom Then
      n = n + 1
      Sh.Cells(n + 6, 1) = r(1, 3)
      Sh.Cells(n + 6, 2).Resize(, 5) = r(1, -4).Resize(, 5).Value
      Sh.Cells(n + 6, "AB") = r(1, 2)
      Sh.Cells(n + 6, "AA") = "=COUNTIF(C[1],RC[1])" 'comptage
    End If
  Next r
  '---détermination de la valeur la plus fréquente pour O4---
  If n Then
    v = CStr(Application.VLookup(Application.Max(Sh.[AA:AA]), Sh.[AA:AB], 2, 0))
    Sh.[O4] = v
  End If
  '---effacement des lignes indésirables---
  For i = 1 To n
    If CStr(Cells(i + 6, "AB")) <> v Then Cells(i + 6, 1).Resize(, 6) = ""
  Next i
  '---tri sur la colonne A---
  Sh.Cells(6, 1).Resize(n + 1, 6).Sort Sh.Cells(6, 1), xlAscending, Header:=xlYes
End If
Sh.Range("A" & n + 7 & ":F" & Sh.Rows.Count) = "" 'RAZ en-dessous
If s Then Me.Saved = True 'évite l'invite à la fermeture si pas d'autres modifications
End Sub
Nota : il y a un onglet ("5") où le nombre de lignes dépassera 8, il faudra ajouter des lignes au tableau.

Edit 1 : j'ai complété pour renseigner aussi la cellule O4.

Edit 2 : il était alors très facile de créer tous les onglets de "1" à "47".

Fichier joint, j'ai créé une MFC pour les bordures sur les colonnes C:N et P:U de "Nomenclature".

A+
 

Pièces jointes

Dernière édition:
Re,

Les colonnes auxiliaires AA et AB m'ont permis de détecter 2 erreurs :

- pour l'onglet "2" rejet de la phase "Kit 9 lames", cela paraît normal et vous semblez l'avoir vu

- pour l'onglet "43" rejet de la phase "Montage de la station de base", peut-être faudrait-il corriger la cellule M104 de "Nomenclature" ?

A+
 
Bonjour WEIDER, le forum,

Pour peaufiner j'ai créé une MFC sur la colonne G de "Nomenclature".

Les doublons sont repérés par une police rouge.

Edit : je trouve que c'est plus discret avec le format personnalisé @" |"

Fichiers (bis) joints.

Bonne journée.
 

Pièces jointes

Dernière édition:
Bonjour Job75,

Et bien dites moi, je suis très très impressionné par toutes vos propositions !
Mille mercis à vous pour votre aide précieuse.

Absent du weekend, je suis en train de regarder le tout dernier fichier (437.6 ko), et d'essayer d'en comprendre tous les rouages... Dure dure pour le novice que je suis.....

Certaines choses sont... comment dirais-je... magiques pour moi 🙂

1/ Exemple, le fais que sur les onglets les références prennent en compte les modifications de celles de l'onglet 'Nomenclature' sans pour autant avoir de formule, exemple B7 et les suivantes, comment la modification est prise en compte !?!?!?

2/ Concernant les tri des colonnes dans l'onglet 'Nomenclature', j'ai vu qu'elles ne peuvent plus êtres faites par 'Colonne' mais en sélectionnant les cellules des colonnes, vous avez inséré des chiffres sur la ligne 6 !?!?

3/ Le fait de vouloir trier des cellules englobe automatiquement l'entièreté du tableau !?!?

4/ Je trouve très bien le trait vertical indiquant les doublons ! Je pense que c'est la Mise En Forme Conditionnelle que vous avez mis 'G =NB.SI(G:G;G1)>1'.

Bref je découvre ce fichier et j'essaie d'en saisir les fonctionnements et subtilités ;-)
 
Bonjour WEIDER, le forum,

Réponses à vos questions sur le dernier fichier.

1) C'est la macro Workbook_SheetActivate du ThisWorkbook qui met à jour chaque onglet activé.

2) Avec un tableau Excel les tris se font comme les filtrages, en cliquant sur un bouton de filtre en ligne 6.

On peut masquer les boutons de filtre : clic dans le tableau => clic sur l'onglet CRÉATION => décocher la case "Bouton de filtre".

Un tableau Excel nécessite des en-têtes de colonnes, ils sont en ligne 6 : Col1 Col2 Col3 etc...

Je les ai masqués par une police blanche.

3) Les tris et les filtrages concernent l'entièreté du tableau B7:U181 "Tableau1", c'est fait pour ça.

4) Oui bien sûr, comme je l'ai dit c'est un format personnalisé.

Edit : ce format @" |" s'applique à des références textes.

Pour qu'il s'applique aussi à des nombres comme '001' ou '123' mettez la colonne G au format "Texte".

Et dans ce cas il faut mettre aussi les colonnes B des autres onglets au format "Texte".

Voyez ce fichier (2 ter).

A+
 

Pièces jointes

Dernière édition:
Bonjour WEIDER, le forum,

Voici le fichier final.

1) Pour que ce soit plus clair j'ai renommé les feuilles du VBAProject (CodeNames) avec ceci :
Code:
Sub NommerFeuillesVBAProject()
Dim vbc As Object, nom$, n%, x$
For Each vbc In ThisWorkbook.VBProject.VBComponents
  nom = vbc.Properties("Name")
  n = Val(nom)
  x = Mid(nom, Len(CStr(n)) + 1) 'lettre a ou b ou ""
  If n Then vbc.Name = "F" & Format(n, "000") & x
  If nom = "Nomenclature" Then vbc.Name = "F000"
Next
End Sub
Nota : pour que l'accès au VBAProject soit possible par macro il faut avoir coché l'option :

- sur Excel 2003 et versions antérieures Faire confiance au projet Visual Basic (menu Outils-Macro-Sécurité-Editeurs approuvés)

- sur Excel 2007 et versions suivantes Accès approuvé au modèle d'objet du projet VBA (onglet Fichier-Options-Centre de gestion de la confidentialité-Paramètres...-Paramètres des macros).

2) Au cas où l'on insère ou coupe-colle des lignes dans "Nomenclature", formule en B7 :
Code:
=MAX(B$6:DECALER(B7;-1;))+1
DECALER étant volatile il faut la Workbook_Open pour éviter l'invite à la fermeture.

Bonne journée.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
183
Réponses
4
Affichages
184
Réponses
7
Affichages
223
  • Question Question
XL 2021 Macro
Réponses
6
Affichages
185
Réponses
3
Affichages
193
Réponses
10
Affichages
371
Réponses
4
Affichages
165
Réponses
2
Affichages
166
Réponses
6
Affichages
208
Retour