Vba excel

nanie13

XLDnaute Nouveau
Bonjour,

Débutante en vba, j’ai quelques petits soucis pour le finaliser mon projet, quelqu’un pourrait t il m’aider s’il vous plait.
Merci par avance.

J'ai crée un userform, ce dernier insère dans les données dans une feuille excel, tout fonctionne, :)sauf les cases à cocher.:mad:

Je souhaiterais qu’un « x » s’insère dans la cellule « Y2 » de ma feuille « Contacts », lorsque cette case est cochée.

Exemple : « checkBoxAdhérent »

If CheckBoxAdhérent.Value Then
MsgBox "la case est cochée"
Sheets("Contacts").Range("Y2") = x :confused:
Else
MsgBox "la case n'est pas cochée"
End If

Ce même userform, sert à rechercher un nom dans une colonne.
Les données trouvées s’insèrent dans cet userform
Cette macro fonctionne et recherche bien le nom recherché dans le TexBox,
Mais parfois, j’ai le même nom et souhaiterais que ma recherche se poursuive.
Il faudrait aussi que les cases à cocher se cochent s’il y a un x dans la cellule.

Exemple :
Private Sub BtValider_Click()
' Insère ligne
Rows("2:2").Select
Selection.Insert Shift:=xlDown
' Déclaration de variable
Dim NomRecherché
NomRecherché = TextBoxNomRecherché
' Sélectionne la colonne B
Columns("B:B").Select
' Recherche le nom
Selection.Find(What:=TextBoxNomRecherché, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
' Coupe et colle la ligne selectionnée en premier
Rows(ActiveCell.Row).Select
Selection.Cut
Rows("2:2").Select
ActiveSheet.Paste
' Insère les données dans le formulaire
TextBoxTitre = Range("A2").Value
TextBoxNom = Range("B2").Value
TextBoxPrénom = Range("C2").Value
TextBoxAdresse1a = Range("D2").Value
TextBoxAdresse1b = Range("E2").Value
TextBoxAdresse1c = Range("F2").Value
TextBoxCodePostal1 = Range("G2").Value
TextBoxVille1 = Range("H2").Value
TextBoxTéléphone1 = Range("I2").Value
TextBoxTéléphone2 = Range("J2").Value
TextBoxTéléphone3 = Range("K2").Value
TextBoxTéléphone4 = Range("L2").Value
TextBoxOrganisme = Range("M2").Value
TextBoxService = Range("N2").Value
TextBoxProfession = Range("O2").Value
TextBoxAdresse2a = Range("P2").Value
TextBoxAdresse2b = Range("Q2").Value
TextBoxAdresse2c = Range("R2").Value
TextBoxCodePostal2 = Range("S2").Value
TextBoxVille2 = Range("T2").Value
TextBoxEmail1 = Range("U2").Value
TextBoxEmail2 = Range("V2").Value
TextBoxSite = Range("W2").Value
TextBoxRemarque = Range("X2").Value
' Supprime les lignes vides
Application.Run "'Carnet d''adresses.xls'!Supprime_lignes_vides"
' Trie par ordre alphabétique
Application.Run "'Carnet d''adresses.xls'!Trie_Colonne_B"
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Vba excel

Bonjour Nanie

pour ta 1ère question, regarde le code ci dessous, à placer dans le module de ton USF :

Code:
Private Sub CheckBoxAdhérent_Click()
Sheets("Contacts").Range("Y2").Value = IIf(CheckBoxAdhérent, "X", "")
End Sub

bon après midi
@+
 
G

Guest

Guest
Re : Vba excel

Bonjour

Pour ta première question:

CheckBoxAdhérent.value=Sheets("Contacts").Range("Y2") = "X"


Pour le reste, un fichier joint serait plus facile pour t'aider.

A bientôt

[Edition] Salut Pierrot!
 

nanie13

XLDnaute Nouveau
Re : Vba excel

Bonjour et merci pour vos réponses,

:)bravo,
Sheets("Contacts").Range("Y2").Value = IIf(CheckBoxAdhérent, "X", "")

:confused:
quel est le code pour cocher le checkbox dans le formulaire (en sens inverse)

Mon fichier excel est trop gros, je n'arrive pas à le joindre en PJ.

Je souhaiterais que lors de ma recherche dans la colonne B, colonne ou il y a des noms, on passe au suivant si ce n'est pas le bon.

Encore merci
 

nanie13

XLDnaute Nouveau
Re : Vba excel

Bonjour,

Toujours le même problème, un userform, une feuille excel :
(Colonne B = NOM - Colonne C = PRENOM)

TextBoxNomRecherché

Exemple : (ce code fonctionne):)

Columns("B:B").Select
Selection.Find(What:=TextBoxNomRecherché, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

Mais comment faire, s’il y a plusieurs noms identiques, pour rechercher le suivant et ainsi de suite ?:confused:

Merci pour votre aide
 
G

Guest

Guest
Re : Vba excel

re Nanie,

Voici une boucle qui remplit une combobox avec les prénoms trouvés et les numéros de ligne en colonne cachée (columnWidth=,0 pts).

si c'est pour un autre traitement, tu adapte la boucle de recherche reste valable.


Code:
Sub GetNomPrénoms(ByVal NomCherché As String)
    Dim Adr1 As String
    Dim c As Range
    Dim i As Long
    ComboboxPrénoms.Clear
    With Columns("B:B")
       'Trouver la première cellule correspondante au nom
        Set c = .Find(What:=NomCherché, After:=ActiveCell, LookIn:=xlFormulas, _
                      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                      MatchCase:=False, SearchFormat:=False)
        'Si une cellule est trouvée
        If Not c Is Nothing Then
          'conserver son adresse dans une variable
            Adr1 = c.Address
            Do
                'Faire le traitement que l'on veut avec la cellule
                'et celle d'à côté (colonne C=prénom)
                With ComboboxPrénoms
                    .AddItem c(, 2) 'Ajout du prénom dans la colonne 1 de la combobox
                    .List(.ListCount - 1, 1) = c.Row 'ajout du numéro de ligne en colonne 2 cachée de la combobox
                End With
                'Chercher le nom suivant
                Set c = .FindNext(c)
            'continuer tant qu'une cellule est trouvée et que son adress est différente de la première adresse trouvée
            Loop While Not c Is Nothing And c.Address <> Adr1
        End If
    End With
End Sub

Voilà

A+
 

nanie13

XLDnaute Nouveau
Re : Vba excel

Bonjour,

Voilà la macro que j'ai faite, mais hélas cette dernière ne recherche qu'une fois le nom à partir de mon UserForm, est-ce la même procédure ?:confused:

Private Sub BtValider_Click()
Dim NomRecherché
NomRecherché = TextBoxNomRecherché
' Insère ligne
Rows("2:2").Select
Selection.Insert Shift:=xlDown
' Recherche nom dans la colonne B
Columns("B:B").Select
Selection.Find(What:=TextBoxNomRecherché, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
' Supprime ligne
Rows(ActiveCell.Row).Select
Selection.Cut
Rows("2:2").Select
ActiveSheet.Paste
' Insère TextBox dans le formulaire
TextBoxTitre = Range("A2").Value
TextBoxNom = Range("B2").Value
TextBoxPrénom = Range("C2").Value
TextBoxAdresse1a = Range("D2").Value
TextBoxAdresse1b = Range("E2").Value
TextBoxAdresse1c = Range("F2").Value
TextBoxCodePostal1 = Range("G2").Value
TextBoxVille1 = Range("H2").Value
TextBoxTéléphone1 = Range("I2").Value
TextBoxTéléphone2 = Range("J2").Value
TextBoxTéléphone3 = Range("K2").Value
TextBoxTéléphone4 = Range("L2").Value
TextBoxOrganisme = Range("M2").Value
TextBoxService = Range("N2").Value
TextBoxProfession = Range("O2").Value
TextBoxAdresse2a = Range("P2").Value
TextBoxAdresse2b = Range("Q2").Value
TextBoxAdresse2c = Range("R2").Value
TextBoxCodePostal2 = Range("S2").Value
TextBoxVille2 = Range("T2").Value
TextBoxEmail1 = Range("U2").Value
TextBoxEmail2 = Range("V2").Value
TextBoxSite = Range("W2").Value
TextBoxRemarque = Range("X2").Value
' Insère les cases à cocher
CheckBoxAdhérent.Value = UCase(Sheets("Contacts").Range("Y2")) = "X"
CheckBoxBénévole.Value = UCase(Sheets("Contacts").Range("Z2")) = "X"
CheckBoxMembreHonneur.Value = UCase(Sheets("Contacts").Range("AA2")) = "X"
CheckBoxSubventionneur = UCase(Sheets("Contacts").Range("AB2")) = "X"
' Supprime les lignes vides
Application.Run "'Carnet d''adresses.xls'!Supprime_lignes_vides"
' Trie par ordre alphabétique
Application.Run "'Carnet d''adresses.xls'!Trie_Colonne_B"
End Sub
 

Pièces jointes

  • Carnet d'adresses.zip
    37.3 KB · Affichages: 92
  • Carnet d'adresses.zip
    37.3 KB · Affichages: 87
  • Carnet d'adresses.zip
    37.3 KB · Affichages: 91

Statistiques des forums

Discussions
312 242
Messages
2 086 528
Membres
103 243
dernier inscrit
SAH