Macro ajoutant automatiquement une colonne

  • Initiateur de la discussion Initiateur de la discussion Tybo
  • 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 !

T

Tybo

Guest
Bonjour,

sur ma feuille Datas, la colonne A concerne les clients. Lorsqu'on rajoute un client, celui-ci vient se positionner automatiquement dans l'ordre alphabétique. Cette fonction marche bien (me semble-t-il).
En même temps que ce classement automatique, la macro devrait également créer une colonne reprenant le nom du nouveau client et là aussi la ranger par ordre alphabétique puisque ces clients et colonnes servent à des listes déroulantes dépendantes.
Et c'est là que ça coince, certaines lettres ne s'intercalent pas là où il faudrait (A, B, C, D et E fonctionnent, à partir de F certaines lettres buguent)

Quelqu'un pourrait-il m'aider ? Merci
 

Pièces jointes

Re : Macro ajoutant automatiquement une colonne

Tybo à dit:
Bonjour,

sur ma feuille Datas, la colonne A concerne les clients. Lorsqu'on rajoute un client, celui-ci vient se positionner automatiquement dans l'ordre alphabétique. Cette fonction marche bien (me semble-t-il).
En même temps que ce classement automatique, la macro devrait également créer une colonne reprenant le nom du nouveau client et là aussi la ranger par ordre alphabétique puisque ces clients et colonnes servent à des listes déroulantes dépendantes.
Et c'est là que ça coince, certaines lettres ne s'intercalent pas là où il faudrait (A, B, C, D et E fonctionnent, à partir de F certaines lettres buguent)

Quelqu'un pourrait-il m'aider ? Merci
Salut
Quelle macro bugue ?
A+
 
Re : Macro ajoutant automatiquement une colonne

Celle qui est censée rajouter la colonne là ou il faut.
Celle qui commence par
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
  If Target.Column > 1 Then Exit Sub
  ' Saisie d'un nouveau client'
  Dim MemClt As String, CltPrec As String, VCol As Integer, VLig As Integer
  ' On mémorise le nom du client'
  MemClt = Target.Value
  If MemClt = "" Then
    ' Si le nom du client est vide = effacer'
    ' On récupère le nom du client précédent'
    CltPrec = Target.Offset(-1, 0)
  End If
  ' 1- tri de la colonne'
  Range("A:A").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  ' Mise à jour de la colonne'
  Application.EnableEvents = False
  If MemClt <> "" Then
    ' 2- trouver le client qui le précède dans la ligne'
    VLig = LigFind("Datas", 1, MemClt) - 1
    CltPrec = Cells(VLig, 1)
    ' 3- Trouver ce client dans les colonnes'
    VCol = ColFind("Datas", 1, CltPrec) + 1
    Columns(VCol).Insert Shift:=xlToRight
    Cells(1, VCol).Value = "Projets " & MemClt
    Cells(2, VCol).Value = "Site"
  Else
    ' 3- Trouver ce client dans les colonnes'
    VCol = ColFind("Datas", 1, CltPrec) + 1
    Columns(VCol).Delete Shift:=xlToLeft
  End If
  Application.EnableEvents = True
End Sub

Function ColFind(Feuil As String, NumLig As Integer, Quoi)
  On Error Resume Next
  With Sheets(Feuil).Rows(NumLig)
    ColFind = .Find(What:=Quoi, LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext, _
      SearchOrder:=xlByColumns, MatchCase:=False).Column
  End With
  On Error GoTo 0
End Function

Function LigFind(Feuil As String, NumCol As Integer, Quoi)
  On Error Resume Next
  With Sheets(Feuil).Columns(NumCol)
    If Left(Quoi, 1) = "=" Then
      ' On recherche une formule'
      LigFind = .Find(What:=Quoi, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, MatchCase:=False).Row
    Else
      ' On recherche une valeur'
      LigFind = .Find(What:=Quoi, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, MatchCase:=False).Row
    End If
  End With
  On Error GoTo 0
End Function

C'est là que ça doit coincer
 
Re : Macro ajoutant automatiquement une colonne

J'ai trouvé le petit hic qui faisait coincer tout ça :
j'appelais la colonne "Projets" et nom du client, depuis que j'ai enlevé "Projets" la macro marche sans soucis.
 
Dernière modification par un modérateur:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour