Vba annulation par numéro de telephone

Bens7

XLDnaute Impliqué
Bonjour a tous !
Voila je viens vers vous aujourd’hui : je m'explique je possède un code qui fonctionne très bien :
Code:
Sub annuleractif()
If Userform1.TextBox10 = "" Then MsgBox ("Vous n'avez pas mis de numero de TELEPHONE"): Exit Sub

    
  With Sheets("ACTIF")

  Set I = .[x:x].Find(What:=Userform1.TextBox10, LookIn:=xlValues, LookAt:=xlWhole)
  If I Is Nothing Then Set I = .[y:y].Find(What:=Userform1.TextBox10, LookIn:=xlValues, LookAt:=xlWhole)
  If I Is Nothing Then MsgBox ("TELEPHONE INTROUVABLE"): Exit Sub
  
          .Cells(I.Row, 2) = CDate(Date)
          .Cells(I.Row, 2).Interior.ColorIndex = 15
          .Cells(I.Row, 2).Font.ColorIndex = 1
          
          .Cells(I.Row, 20) = "ANNULER"
          .Cells(I.Row, 21) = "ANNULER"
          .Cells(I.Row, 20).Interior.ColorIndex = 15
          .Cells(I.Row, 21).Interior.ColorIndex = 15
          .Cells(I.Row, 22).Interior.ColorIndex = 15

Userform1.TextBox10 = ""
  End With
  Set I = Nothing
End Sub

Donc j'ai mon Userform je met mon numéro de téléphone dans la textbox10, je clike su un bouton ANNULER et ca me lance ce macro qui recherche le numero ou dans x:x ou dans y:y et met donc annuler dans les collones voulue et qui met aussi en grise, date d'annulation enfin bref...
Le seul souci c'est que si j'ai plusieurs numéro de téléphone sur mon fichier, il n'y a que le premier de mon tableau (ACTIF) qui se met en annuler les autres ne changent pas.... je voudrais en fait que toutes les lignes qui comporte le même numéro de téléphone (colonne x:x ou y:y ) subissent le même changement !
Merci a tous pour votre aide ..
 

Lone-wolf

XLDnaute Barbatruc
Re : Vba annulation par numéro de telephone

Bonsoir Bens,

après 414 messages, tu devrais penser à joindre un fichier si tu veux être aidé plus rapidement. Et là je ne vois qu'un tableau.

Peut-être en changeant un des I en K par exemple, et un ajoutant le 2ème tableau. Un exemple:

K.offset(0, 30).value = "ANNULER"


A+ :cool:
 
Dernière édition:

Bens7

XLDnaute Impliqué
Re : Vba annulation par numéro de telephone

Voici un fichier en pieces jointes .
Merci pour vos lumieres
p.s : debutant vba si possible de modifie a meme le code merci
 

Pièces jointes

  • demo.xlsm
    107.5 KB · Affichages: 32
  • demo.xlsm
    107.5 KB · Affichages: 38

Bens7

XLDnaute Impliqué
Re : Vba annulation par numéro de telephone

Magnifique !
Alors par contre j'ai un probleme :
1) si le fichier est avec des filtres : TELEPHONE INTROUVABLE

et 2eme question :
2)Si je veux executer cette macro sur une autre feuil, avec les meme specificite mais vu que vous avez suprimer :
' With Sheets("ACTIF") par > With zone

que dois je faire etre actif sur la feuil voulu ?
 

Bens7

XLDnaute Impliqué
Re : Vba annulation par numéro de telephone

1) C'est le meme fichier plus haut que vous avez modifie juste si c'est filtre ca ne fonctionne pas
2)Disons que ma 2eme feuille se nome ARCHIVES :

Set zone = [ARCHIVES!].(Columns("X"), Columns("Y")) ???

Desole vraiment debutant ,,, lol
 

eriiic

XLDnaute Barbatruc
Re : Vba annulation par numéro de telephone

Bonjour,

Pour désactiver les filtres :
Code:
[FONT=Calibri]Withsheets("ACTIF")[/FONT]
[FONT=Calibri]    If .AutoFilterMode And .FilterMode Then.ShowAllData[/FONT]
[FONT=Calibri]End with[FONT=Verdana]
Si tu ne veux pas les désactiver il faudra boucler, plus lent.
eric

[/FONT][/FONT]
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Vba annulation par numéro de telephone

Bonjour à tous,

(...) le fichier que j'utilise quasiment tt le.temps filtre ... Donc le top c'est sur c'est sur toute les.lignes même les masquees.

Un essai avec le code suivant:
VB:
Sub AnnulerTEL()
Dim tablo, Quoi, car$, i&, max&, plage As Range

  If TextBox10 = "" Then
    MsgBox "Aucun N° de téléphone saisi!", vbCritical
    Exit Sub
  End If
  With ActiveSheet
    'tableau des n° de tél de la plage utile
    Set plage = Intersect(.Columns("X"), .UsedRange)
    max = plage.Row + plage.Rows.Count - 1
    Set plage = Intersect(.Columns("y"), .UsedRange)
    j = plage.Row + plage.Rows.Count - 1
    If j > max Then max = j
    If max = 1 Then Exit Sub
    tablo = .Range(.Cells(1, "x"), .Cells(max, "y"))

   'transformation du n° de tél à trouver en nombre
    For i = 1 To Len(TextBox10)
      car = Mid(TextBox10, i, 1)
      If car >= "0" And car <= "9" Then Quoi = Quoi & car
    Next i
    Quoi = Val(Quoi): j = 0

    'boucle sur le tableau des n° de tél
    If Quoi > 0 Then
      Application.ScreenUpdating = False
      For i = 2 To UBound(tablo)
        If tablo(i, 1) = Quoi Or tablo(i, 2) = Quoi Then
          j = j + 1: .Cells(i, 2) = CDate(Date)
          .Cells(i, 2).Interior.ColorIndex = 15: .Cells(i, 2).Font.ColorIndex = 1
          .Cells(i, 20) = "ANNULER": .Cells(i, 21) = "ANNULER"
          .Range(.Cells(i, 20), .Cells(i, 22)).Interior.ColorIndex = 15
        End If
      Next i
      Application.ScreenUpdating = True
    End If

    If j = 0 Then
      MsgBox TextBox10 & "  -> Téléphone introuvable.", vbExclamation
    Else
      MsgBox TextBox10 & "  -> Téléphone trouvé dans " & j & " ligne(s).", vbExclamation
    End If
    TextBox10 = ""
  End With
End Sub

Edit : v1a (oublié un point devant un range)
 

Pièces jointes

  • Bens7- demo- v1a.xlsm
    109 KB · Affichages: 42
Dernière édition:

Discussions similaires

Réponses
2
Affichages
154
Réponses
8
Affichages
501
Réponses
12
Affichages
580

Statistiques des forums

Discussions
312 322
Messages
2 087 286
Membres
103 507
dernier inscrit
tapis23