Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recerchev en vba

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 !

nabilexcel2007

XLDnaute Occasionnel
Bonjour;
j'aimerai bien appliquer ma formule recherchev en code vba a la saisie de l'utilisateur automatiquement Svp
=SIERREUR(INDEX(bd!a2:t100]; EQUIV(a3;bd!a3:a100; 0));"")
Merci
 
pour ta feuille Archive
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Fin = Range("A" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("A3:A" & Fin)) Is Nothing Then
    With Sheets("BD").Range("A:A")
        Set trouve = .Find(Target)
        If Not trouve Is Nothing Then
            Target.Offset(0, 1) = trouve.Offset(0, 1)  'annexe
            Target.Offset(0, 2) = trouve.Offset(0, 4)  'nom
            Target.Offset(0, 3) = trouve.Offset(0, 4)  'DateSortie
            Target.Offset(0, 4) = trouve.Offset(0, 4)  'DateRetour
            Target.Offset(0, 5) = trouve.Offset(0, 4)  'EtatDossier
            Target.Offset(0, 6) = trouve.Offset(0, 4)  'Personnel
            Target.Offset(0, 7) = trouve.Offset(0, 2)  'Empl
            Target.Offset(0, 8) = trouve.Offset(0, 4)  'Observation
        End If
    End With
End If
Application.EnableEvents = True
End Sub
Je te laisse modifier les "trouve.offset(0,x) parce que je n'ai pas compris la correspondance entre les noms de colonne
 
et pour ta feuille "Décharge"
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Fin = Range("A" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("A4:A" & Fin)) Is Nothing Then
    With Sheets("BD").Range("A:A")
        Set trouve = .Find(Target)
        If Not trouve Is Nothing Then
            Target.Offset(0, 1) = trouve.Offset(0, 4)  'annexe
            Target.Offset(0, 2) = trouve.Offset(0, 2)  'nom
            'Target.Offset(0, 4) = Target.Offset(-1, 4) + 1 'N° incrémentation
            'ou alors
            Target.Offset(0, 4) = WorksheetFunction.Max(Range("E2:E" & Target.Row - 1)) + 1
        End If
    End With
End If
Application.EnableEvents = True
End Sub
 
je suis en train de regarder ton code

comment est alimentée la feuille Archive?
uniquement en saisissant un numéro de dossier en colonne A?
une fois que la ligne est remplie avec les infos de la BD: vas tu modifier/ajouter des infos directement dans la feuille Archive? auquel cas, la colonne F (qui contient une formule pour l'instant) doit etre mise à jour
 
Voir PJ

Comme tu utilises des tables, j'en ai ajouté une et redimensionné celles qui existaient déjà
Le code utilise donc maintenant ces noms de table

pour supprimer les dossiers "Rendu"
plutot qu'une boucle, on utilise le filtre et supprime les lignes filtrées
==> à tester sur ton fichier, car je pense que avec 40 000 lignes, ca risque d'etre plus long
==> il faudra voir pour passer par les tableaux VBA (voir macro dans module 2)
 

Pièces jointes

Pour redimensionner la table: corriger le code de la macro module 2

'redimensionner la table
'Fin = .Range("A" & .Rows.Count).End(xlUp).Row
.ListObjects("Tab_Archive").Resize .Range("tab_Archive").CurrentRegion
 
Bonsoir;
=NB.SI.ENS(Tab_BD[Année];A4;Tab_BD[Annexe];ville1_creation;Tab_BD[Phase];"Creation";Tab_BD[Etat];"archivé")

je veux transformer cette formule en code vba qui se trouve dans la feuille ETAT cellule B4
et a moi de compléter le reste de tableau merci
 
Hello
ce code te permet de remplir tout le tableau (hors lignes 28 et 29)

VB:
Sub RemplirTabEtat()
Dim TabEtat() As Variant
With Sheets("Etat")
    TabEtat = .Range("A4:X27").Value

    For i = LBound(TabEtat, 1) To UBound(TabEtat, 1)
        Somme = 0
        For j = 1 To 24 'pour toutes les colonnes du tableau
            Select Case j
                Case 2, 3, 4, 5 'formule pour "Phase Creation"
                    formule = "countifs(Tab_BD[Année],A" & i + 3 & ",Tab_BD[Annexe],ville" & (j - 1) Mod 6 & "_creation,Tab_BD[Phase],""Creation"",Tab_BD[Etat],""archivé"")"
                Case 8, 9, 10, 11 'formule pour "Phase Extension"
                    formule = "countifs(Tab_BD[Année],A" & i + 3 & ",Tab_BD[Annexe],ville" & (j - 1) Mod 6 & "_ext,Tab_BD[Phase],""extension"",Tab_BD[Etat],""archivé"")"
                Case 14, 15, 16, 17 'formule pour "Dossier Annule"
                    formule = "countifs(Tab_BD[Année],A" & i + 3 & ",Tab_BD[Annexe],ville" & (j - 1) Mod 6 & "_annule,Tab_BD[Phase],""annule"",Tab_BD[Etat],""archivé"")"
                Case 20, 21, 22, 23 'formule pour "Sieje"
                    formule = "countifs(Tab_BD[Année],A" & i + 3 & ",Tab_BD[Annexe],""ville" & (j - 1) Mod 6 & """)"
                Case 1, 7, 13, 19 'cas où j pointe sur une colonne "Année"
                    Somme = 0
                    GoTo suivant
                Case Else 'cas où j pointe une colonne "somme"
                    TabEtat(i, j) = Somme
                    GoTo suivant
            End Select
            
            TabEtat(i, j) = Application.Evaluate(formule)
            Somme = Somme + TabEtat(i, j)
suivant:
        Next j
        
    Next i
    .Range("A4:X27") = TabEtat
End With
End Sub
 
- 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
261
Réponses
1
Affichages
292
wDog66
W
Réponses
7
Affichages
475
Réponses
4
Affichages
371
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…