Microsoft 365 Recherche v + VBA

Grelune

XLDnaute Nouveau
Bonjour,

Je suis très clairement débutante en VBA. Voilà je souhaite faire un planning semi perpétuel pour mon entreprise (ils devront chaque année enregistrer sous mon fichier pour changer l'année et tout se fera automatiquement).

Je vous joint un fichier que j'ai modifié après pas mal de récup et de recherche sur internet.

Le but de ce fichier :
  • De trouver les dates similaires de chaque commande dans la ligne 7 du planning
  • Puis d’écrire le contenu de la ligne 8 (D, C, P, T ou X) correspondant à la date de la commande au croisement de la ligne de commande et de la date similaire trouvée dans le planning
Voici la macro que j'essaye de faire pour cette fonctionnalité mais maintenant je bloque :

VB:
Sub recherchev()
  
Dim dercol As Integer
dercol = cells(7, Columns.Count).End(xlToLeft).Column + 1 'N°de la dernière colonne vide de la ligne 7
Dim i As Byte 'i variable représentant le n° de ligne
Dim j As Byte ' J variable représentant le n° de colonne

For i = 10 To Sheets(1).Range("A10000").End(xlUp).Row ' pour i de la ligne 10 à la dernière ligne
For j = 1 To Sheets(1).Range("H7:dercol") ' pour j de la colonne H ligne 7 à la dernière colonne vide de cette ligne

With Sheets(1)
resultat = IfError(WorksheetFunction.VLookup(Range("c" & "i").Value, Range("H7:dercol"), "C8", faux), "-") ' recherche de la valeur c"i" dans la ligne 7 du planning et si correspondance exact renvoie la valeur de la cellule C8 si errur renvoie un - mais où est renvoyé la cellule c8 ,

End With

End Sub

Mais je suis en train de me demander si plutôt que d'utiliser recherche h ou v j'aurais dû utiliser les fonction FIND ou INDEX + EQUIV...

Dans l'attente d"un retour de votre part,

Je vous remercie
 

Pièces jointes

  • Copie de excel-planning-01 perpétuel.xlsm
    44 KB · Affichages: 12

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Dans le fichier joint, vous trouverez dans votre plage H10:MN15 que j'ai nommé "Planning.Grille" la formule suivante qui fonctionne :
=SIERREUR(INDEX($C$8:$G$8;1;EQUIV(H$9;$C10:$G10;0));"")

si vous double-cliquez sur une cellule de la plage C10:G15 que j'ai nommée "Planning.DatesCommandes" la macro évènementielle Berfore_DoubleClick sélectionnera directement la date correspondant dans 'Planning.Grille'

Dans la gestion de l'évènement Selection_Change, quand une cellule de 'Planning.Grille' est sélectionnée, le mois correspondant est affiché en E4.

Cordialement
 

Pièces jointes

  • Copie de excel-planning-01 perpétuel.xlsm
    62.9 KB · Affichages: 5

Grelune

XLDnaute Nouveau
C'était si simple....

Et dire que cela fait 2 jours que j'y suis !!!

Je me sens bête.

Merci beaucoup !!

Le réglage pour les mois est parfait.

Dernière petite question, c'est encore une question d'affichage mais le but de ce planning est de voir le plus de jour en même temps et les écrans ne sont pas infinis j'aurais donc voulu que même en mettant de toute petite colonne on peut voir en grand le premier de chaque mois, le mois en grand au dessus du planning.
-=TEXTE(PLANNING_DATE_DEBUT;"mmmmmm") pour le 01 janvier en H5
- =SI(TEXTE(I7;"mmmmmm")=TEXTE(H7;"mmmmmm");"";TEXTE(I7;"mmmmmm")) pour touT le reste de l'année DANS LIGNE 5

J'ai mis mes formules problèmes vu que toutes mes cellules sont pleines je ne peux pas transposer le contenu de la première sur les suivantes.

J'essayais donc de faire une macro qui nettoierait automatiquement les cellules contenant "" de la ligne 5 :

VB:
Sub nettoyer_mois()
Dim dercell As Integer
 Dim d 'd représente le num de la colonne
        dercell = Cells(5, Columns.Count).End(xlToLeft).Column + 1 'N°de la dernière colonne vide de la ligne 5
        For d = 1 To Sheets(1).Range("H5:dercell") '
        If Cells(5, d) = "" Then Range("cells(5,d)").clears
        Next
End Sub

Bien évidemment cela ne marche pas
 

Discussions similaires

Statistiques des forums

Discussions
315 127
Messages
2 116 534
Membres
112 771
dernier inscrit
mikadu49