VB | Excel - ajout conditionnel
Résolu/Fermé
A voir également:
- VB | Excel - ajout conditionnel
- Mise en forme conditionnelle excel - Guide
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
8 réponses
m@rina
Messages postés
21244
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
10 janvier 2025
11 377
7 août 2008 à 16:07
7 août 2008 à 16:07
Bonjour,
Je vais te donner le code à utiliser avec VBA, je pense que tu devrais t'y retrouver en VB.
Dans mon exemple, la colonne A contient les prénoms et la colonne B les noms.
Dans une Userform, on imagine 2 textbox (1 et 2) : la 1 pour entrer le prénom et la 2 pour entrer le nom. Plus un bouton de validation.
Private Sub CommandButton1_Click()
Range("A65536").End(xlUp).Offset(1, 0).Select
If Application.WorksheetFunction.CountIf(Range("A:A"), Me.TextBox1.Value) > 0 Then
MsgBox "ce prénom existe déjà"
Exit Sub
Else
ActiveCell.Value = Me.TextBox1.Value
ActiveCell.Offset(0, 1).Value = Me.TextBox2.Value
ActiveCell.CurrentRegion.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range_("A2"),Order2:=xlAscending, Header:=xlYes
End If
Unload Me
End Sub
m@rina
Je vais te donner le code à utiliser avec VBA, je pense que tu devrais t'y retrouver en VB.
Dans mon exemple, la colonne A contient les prénoms et la colonne B les noms.
Dans une Userform, on imagine 2 textbox (1 et 2) : la 1 pour entrer le prénom et la 2 pour entrer le nom. Plus un bouton de validation.
Private Sub CommandButton1_Click()
Range("A65536").End(xlUp).Offset(1, 0).Select
If Application.WorksheetFunction.CountIf(Range("A:A"), Me.TextBox1.Value) > 0 Then
MsgBox "ce prénom existe déjà"
Exit Sub
Else
ActiveCell.Value = Me.TextBox1.Value
ActiveCell.Offset(0, 1).Value = Me.TextBox2.Value
ActiveCell.CurrentRegion.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range_("A2"),Order2:=xlAscending, Header:=xlYes
End If
Unload Me
End Sub
m@rina
Merci de ta réponse,
j'ai essayé d'adapter à mon programme et j'obtiens une erreur : Sub ou Funtion non définie
ça bascule dans mon code VB et j'ai "Range_" qui est surligné en gris... peut être que cette fonction n'existe pas sous Excel 2002 ?
j'ai essayé d'adapter à mon programme et j'obtiens une erreur : Sub ou Funtion non définie
ça bascule dans mon code VB et j'ai "Range_" qui est surligné en gris... peut être que cette fonction n'existe pas sous Excel 2002 ?
m@rina
Messages postés
21244
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
10 janvier 2025
11 377
7 août 2008 à 16:34
7 août 2008 à 16:34
J'ai du mal à te répondre pour le VB pur que je ne connais pas... Je ne connais que le VBA et RANGE existe depuis longtemps, et en particulier sous Excel 2002.
Essaie peut être de préciser le classeur et la feuille :
Workbooks("monclasseur").Worksheets("mafeuille").Range("A65536").End(xlUp).Offset(1, 0).Select
Tu ne peux pas utiliser VBA ?
m@rina
Essaie peut être de préciser le classeur et la feuille :
Workbooks("monclasseur").Worksheets("mafeuille").Range("A65536").End(xlUp).Offset(1, 0).Select
Tu ne peux pas utiliser VBA ?
m@rina
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oui je peux utiliser VBA.
j'ai mis en commentaire la ligne
ActiveCell.CurrentRegion.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range_("A2"),Order2:=xlAscending, Header:=xlYes
et ça marche, si le prenom que je saisis existe déja il m'avertit. Est ce que cette ligne est importante ? A quoi sert-elle ?
seulement maintenant il reste mon deuxieme probleme, a savoir je veux insérer le nom non pas au debut ou a la fin mais là ou il y a le même nom dans la colonne B, et le mettre par ordre alphabétique comme je l'ai dit dan smon énoncé...
tu aurais une idée comment faire stp ?
merci pour tes réponses
j'ai mis en commentaire la ligne
ActiveCell.CurrentRegion.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range_("A2"),Order2:=xlAscending, Header:=xlYes
et ça marche, si le prenom que je saisis existe déja il m'avertit. Est ce que cette ligne est importante ? A quoi sert-elle ?
seulement maintenant il reste mon deuxieme probleme, a savoir je veux insérer le nom non pas au debut ou a la fin mais là ou il y a le même nom dans la colonne B, et le mettre par ordre alphabétique comme je l'ai dit dan smon énoncé...
tu aurais une idée comment faire stp ?
merci pour tes réponses
m@rina
Messages postés
21244
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
10 janvier 2025
11 377
7 août 2008 à 17:17
7 août 2008 à 17:17
Justement cette ligne de code sert à trier ! :D
Ce code trie la plage en cours, à condition que ta base soit créée correctement, qu'il n'y ait pas de lignes vides, etc. ça dépend de ton tableau.
Il trie alphabétiquement sur la 2e colonne (selon mon exemple) pour les noms (Key1), puis sur la première colonne pour les prénoms (Key2).
m@rina
Ce code trie la plage en cours, à condition que ta base soit créée correctement, qu'il n'y ait pas de lignes vides, etc. ça dépend de ton tableau.
Il trie alphabétiquement sur la 2e colonne (selon mon exemple) pour les noms (Key1), puis sur la première colonne pour les prénoms (Key2).
m@rina
autant pour moi ça marche c'est juste que j'avais bêtement oublié d'enlever le "_" après Range, le tri fonctionne super bien !
par contre un truc c'est que si la saisie est correcte il ajoute le nom et prenom dans la case active, qui est habituellement A1, comment faire pour qu'il aille au bout de la liste à la première cellule vide avant d'ajouter ..?
par contre un truc c'est que si la saisie est correcte il ajoute le nom et prenom dans la case active, qui est habituellement A1, comment faire pour qu'il aille au bout de la liste à la première cellule vide avant d'ajouter ..?
m@rina
Messages postés
21244
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
10 janvier 2025
11 377
>
Harry974
8 août 2008 à 09:32
8 août 2008 à 09:32
Bonjour,
Je comprends pas... Cette fonction était dans mon code:
Private Sub CommandButton1_Click()
Range("A65536").End(xlUp).Offset(1, 0).Select
m@rina
Je comprends pas... Cette fonction était dans mon code:
Private Sub CommandButton1_Click()
Range("A65536").End(xlUp).Offset(1, 0).Select
m@rina