XL 2021 3 problèmes : Bouton VBA (fusion et suppression) & doublons

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 !

Dubuyz1

XLDnaute Nouveau
Bonjour,
Je ne suis pas grand connaisseur dans le domaine et mon patron m'a chargé d'une mission : refaire son tableau d'enregistrement de commandes.
J'ai refait beaucoup de choses (si ce n'est pas tout son tableau) mais, à la fin de l'exercice, je me retrouve bloqué face à 3 problèmes.

Le premier : J'ai plusieurs entreprises, dont certaines sont les mêmes, juste à des localisations différentes. Afin d'harmoniser les prix pour le groupe, le calcul du transport se base sur l'entreprise la plus loin. C'est-à-dire que je cherche une fonction qui me permettrait de dire : SI(plusieurs fois la même entreprise;km le plus loin;km de cette entreprise). Je ne sais pas si j'ai été très clair, de toutes façons, je le réexplique dans la feuille 1 du tableur en pièce jointe.

Le deuxième, lorsque je récapitule la commande de l'entreprise, il y a plusieurs lignes qui se mettent les unes sous les autres. J'aurais besoin d'un bouton VBA afin que le nom de l'entreprise (en début de ce tableau), se fusionne avec les ligne en dessous afin qu'il soit devant toutes les lignes de la commande. Idem, si je n'ai pas été très clair, je l'ai expliqué dans la feuille 2.

Le troisième, c'est l'inverse. Lorsque je fais la facture, j'aurais besoin d'un bouton VBA qui fasse en sorte de supprimer les lignes inutiles afin de ne pas avoir des factures à rallonge. Encore une fois, vous trouverez l'explication dans la feuille 3 du tableur.

Voilà, j'espère que vous réussirez à m'aider !
Je vous remercie d'avance !
 

Pièces jointes

Bonjour Dubuyz,
Un essai en PJ pour les 3 soucis :
Code:
Sub km()
Dim Tablo, i%, j%, KmMax, Entreprise$
Tablo = [A1].CurrentRegion
For i = 2 To UBound(Tablo)
    Entreprise = Split(Tablo(i, 1), " ")(0)
    KmMax = 0
    For j = 2 To UBound(Tablo)
        If Tablo(j, 1) Like Entreprise & "*" Then
            KmMax = Application.Max(KmMax, Tablo(j, 2))
        End If
    Next j
    Tablo(i, 3) = KmMax
Next i
[A1].Resize(UBound(Tablo, 1), UBound(Tablo, 2)) = Tablo
End Sub
Code:
Sub Fusionner()
Dim DL%, Lig%, C%
DL = [G1000].End(xlUp).Row
For Lig = 3 To DL
    If Cells(Lig, "F") = "" And Cells(Lig, "G") <> "" Then C = Lig
Next Lig
Range(Cells(2, "F"), Cells(C, "F")).MergeCells = True
Range(Cells(2, "I"), Cells(C, "I")).MergeCells = True
[F2].VerticalAlignment = xlCenter
[I2].VerticalAlignment = xlCenter
End Sub
Code:
Sub EffacerLignesVidesFacture()
Dim DL%, Début%
DL = [E1000].End(xlUp).Row
For Lig = DL - 1 To 4 Step -1
    If Cells(Lig, "E") = "" Then Début = Lig
Next Lig
Range("E" & Début & ":G" & DL - 1).Delete Shift:=xlUp
End Sub
 

Pièces jointes

Re,
Par formules XL cela va être une usine à gaz, je vous propose une fonction perso en VBA puisque vous en avez.
La syntaxe est :
Code:
=km(Entreprise;Plage)
par ex :
=km(A2;$A$2:$B$7)
Le code :
VB:
Function km(Nom, Plage)
Dim Tablo, i%, j%, KmMax, Entreprise$
Tablo = Plage
Entreprise = Split(Nom, " ")(0)
KmMax = 0
For j = 2 To UBound(Tablo)
    If Tablo(j, 1) Like Entreprise & "*" Then
        KmMax = Application.Max(KmMax, Tablo(j, 2))
    End If
Next j
km = KmMax
End Function
 

Pièces jointes

Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Réponses
1
Affichages
244
Réponses
2
Affichages
308
Réponses
4
Affichages
400
Réponses
3
Affichages
352
Réponses
10
Affichages
517
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
34
Retour