Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2011, 12h44   #1
Invité de passage
 
Homme etienne b
Chargé d'affaire
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme etienne b
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Finance

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Par défaut incrémenter liste numéro EXCEL

Bonjour à tous,
Je cherche à construire une macro pour faire les actions suivantes, mais mon faible niveau VBA me bloque malgré mes tentatives avec ou sans macros.
Je vous explique mon besoin:

2 colonnes:
- une en A avec une liste de 1 à N (liste de bons de commandes)
- une en B avec un code (quelquonque, en fonction du compteur nécessaire aux formules, par défaut j'avais prit 1 et 0)

Lorsqu'un numéro de BdC est utilisé, la colonne B affiche 1, lorsque le numéro de BdC est libre, la colonne B affiche 0.

Dans la cellule D5, lorsqu'on clique sur un bouton attaché à la macro, je souhaite qu'apparaisse le 1er numéro de BdC "libre" (avec le code 0 dans mon exemple), puis que son code 0 se transforme en 1 automatiquement (mais le numéro qui s'affiche reste bien celui dont on parlait juste avant).

Merci d'avance pour votre aide!
Cdlt,
Etienne
etienne44230 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 15h12   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Attache cette macro à ton bouton :

Code :
1
2
3
4
5
6
7
8
Sub test1()
    Dim Ligne As Long
    With Sheets("Feuil1")
        Ligne = Application.Match(0, .[B:B], 0)
        .[D5] = Application.Index(.[A:A], Ligne)
        Application.Index(.[B:B], Ligne) = 1
    End With
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 15h35   #3
Membre actif
 
Homme
Ressources humaines
Inscription : janvier 2011
Messages : 172
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ressources humaines
Secteur : Bâtiment

Informations forums :
Inscription : janvier 2011
Messages : 172
Points : 166
Points : 166
Bonjour,

si j'ai bien compris, tu veut être averti si tu saisie un numéro déjà existant et dans la colonne A par le 1 ou 0 de la colonne B, je te propose une solution sans VBA (Mise en forme conditionnelle), alors sélectionner la colonne A et ajouter cette formule avec une mise en forme si le numéro saisie existe déjà:
Code :
=SI(NB.SI(INDIRECT(ADRESSE(1;1;4;1)&":"&ADRESSE(LIGNE()-1;1;4;1));A1)>0;1;0)
, et pour la cellule D4 tu pourra mettre cette formule qui te donnera le prochain numéro:Cordialement

Gestionnaire rh
Gestionnaire_rh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 16h50   #4
Invité de passage
 
Homme etienne b
Chargé d'affaire
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme etienne b
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Finance

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Daniel.C
Merci bcp ca fonctionne.

Gestionnaire RH
Merci pour votre aide mais je veux que le numéro s'incrémente automatiquement, rien à faire à la main, il est vrai que c'était impossible sans un petit bouton.

Je reviendrai vers vous très vite pour la fin de la macro
Cdlt,
Etienne

Je reviens plus vite que prévu,
Est-il possible d'associer une rechercheV à une 2ème macro ?
Lorsque je la copie colle cella ne fonctionne pas.
Il s'agit de la formule suivante:
=RECHERCHEV(0;$B:$C;2;FAUX)-1
Merci d'avance!
Etienne
etienne44230 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 17h01   #5
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Tu n'as rien dit de la colonne C

Ca donne :

Code :
Résultat = Application.VLookup(0, .[B:C], 2, False) - 1
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 17h36   #6
Invité de passage
 
Homme etienne b
Chargé d'affaire
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme etienne b
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Finance

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Exact désolé La colonne C est égale à la colonne A (C1=A1) , mais les valeurs doivent être à droite pour la recherche V.

J'ai omis de préciser que je voulais le résultat de la macro recherche V en cellule D7 .
Merci d'avance
etienne44230 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 17h45   #7
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
J'ai un petit doute sur le "-1" ?

Code :
1
2
3
4
5
6
7
Sub test2()
    Dim Ligne As Long
    With Sheets("Feuil1")
        .[D7] = Application.VLookup(0, .[B:C], 2, False) - 1
        Application.VLookup(0, .[B:C], 1, False) = 1
    End With
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 18h11   #8
Invité de passage
 
Homme etienne b
Chargé d'affaire
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme etienne b
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Finance

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Ca fonctionne, (le -1 c'est pour qu'il me dise la dernière valeur à 0 en cherchant celle à 1)
Néanmoisn 'jai le débogueur,
Code :
1
2
3
4
5
6
7
Sub test2()
    Dim Ligne As Long
    With Sheets("Feuil1")
        .[D7] = Application.VLookup(0, .[B:C], 2, False) - 1
        Application.VLookup(0, .[B:C], 1, False) = 1
    End With
End Sub
Sur la ligne Application.VLookup(0, .[B:C], 1, False) = 1
"Erreur définie par l'applciation ou pas l'objet"
Merci
etienne
etienne44230 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 18h24   #9
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Peut-être (je sature ) :

Code :
1
2
3
4
5
6
7
Sub test2()
    Dim Ligne As Long
    With Sheets("Feuil1")
        .[D7] = Application.VLookup(0, .[B:C], 2, False) - 1
        Application.Index(.[B:B], Application.Match(0, .[B:B], 0)) = 1
    End With
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 19h00   #10
Invité de passage
 
Homme etienne b
Chargé d'affaire
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme etienne b
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Finance

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Merci,
Il me change le 0 en 1 par contre, je veux jsute qu'il me dise le dernier numéro à 1.
Cdlt,
etienne44230 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 19h09   #11
Invité de passage
 
Homme etienne b
Chargé d'affaire
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme etienne b
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Finance

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
C'est réparé merci bcp pour tout !
etienne44230 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h33.


 
 
 
 
Partenaires

Hébergement Web