VBA incrémentation automatique alpha-num.

Résolu
nicodu072 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   -  
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
suite à mon précédent poste :

https://forums.commentcamarche.net/forum/affich-25722936-probleme-base-de-donnee#newanswer

Je souhaiterais réaliser un programme capable de trier automatiquement de A à Z et ensuite d'incrémenter mes fiches techniques automatiquement en fonctions des informations contenues dans certaines cellules de la nomenclature.
Voici un exemple :

Ma première ligne aura toujours le repérage en D1="A1"
Ma seconde ligne devra comparer plusieurs lignes : Si A2=A1 = vrai, alors vérifier si B2=B1.
Si B2=B1 = vrai, alors vérifier si C2=C1. Si C2=C1, alors D2=D1 (soit "A1").
Ou si A2<>A1, alors D2="A2"
Ou si A2=A1= vrai mais si B2<>B1, alors D2="A2"
Ou si A2=A1 = vrai, si B2=B1 = vrai mais si C2<>C1, alors D2="A2"

Au début si souhaitais faire :

en D1 : =SI(A1<>"";"A1";"")
en D2 : =Si(ET(A2=A1;B2=B1;C2=C1);D1;"A2")
en D3 : =SI(ET(A3=A2;B3=B2;C3=C2);D2;"A3")
etc.

Mais si j'utilise la fonction si/et, je suis obliger de créer une formule pour chaque ligne. Or je souhaite que cela se fasse automatiquement en fonction des cellules non vides après avoir fait un trie de A à Z.

Merci de vos réponses.




10 réponses

Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Difficile de comprendre votre problème... !
Est-il possible de voir le dernier fichier pour se rendre compte de la faisabilité ?
0
nicodu072 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Merci Le Pingou de vous pencher sur mon problème.

Le fichier se trouve ici : https://www.cjoint.com/?BHnjWMBw6cX

Cependant, je vais reprendre mes explications précédentes en simplifiant les choses et avec les vrais noms de cellules :

Ma première ligne aura toujours le repérage en G3="A1"

Ma seconde ligne devra comparer plusieurs lignes : Si B4=B3 et si E4=E3 et si F4=F3, alors G4=G3 (soit "A1").

Sinon G4="A2"

Je pense qu'il faut donc faire une boucle WHILE qui dans un premier temps vérifie la présence de texte dans B3 et numérote G3 par "A1" puis passe à la ligne suivante et vérifie si mes conditions sont vraies et que G4 soit égale à G3 si les comparaisons sont vraies et à G3+1 (soit "A2) si les comparaisons sont fausses.

La boucle While serait vraie tant que du texte est présent dans la colonne B3.

Voici le principe que je comptait utiliser :


Sub incrémentation()
'Verifier que du texte est présent dans la cellule B3
If IsNumeric(Range("B3")) Then 'Ici remplacer IsNuméric par une vérification de texte
Range("G3") = "A1"
'Déclaration de la variable
Dim varTexte As String
'Début de la boucle
While (Columns("B:B")) <> "" 'Tant que les cellules de la colonne B sont non vides, la boucle est répétée
'Vérification des conditions
If Range("Ex") = Range("Ex-1) and Range("Bx") = Range("Bx-1) and Range("Fx")=("Fx-1") then' E représente la colonne et x la ligne
Gx = "Gx-1" 'Soit "A1"
Else: Gx = "Gx-1" + 1 'Soit "A2"
End If
Wend
End Sub


Merci de votre réponse.
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Eh bien, le fichier [Nomenclature ETDE.xlw] est vide, je ne peux pas en faire plus.
0
nicodu072 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention  
 
Désolé, cela sera mieux avec ceci : https://www.cjoint.com/?BHnqxj34EK7

Extrayez l'ensemble puis ouvrez l'espace de travail.

Cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci. Cependant il faut éclairer ma lanterne car il y a 3 fichiers et si j'ouvre n'importe lequel j'ai toujours le classeur [Nomenclature.xlsm] qui s'ouvre ..... Pourquoi ?
Sur quel classeur et feuille se rapporte votre explication .... Pas facile à trouver, pour l'instant sans succès ... !
0
nicodu072 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention  
 
En effet, lorsque vous ouvrez un fichier, le classeur nomenclature s'ouvre car s'est sur celui-ci que je travail (cependant, il est lié au classeur [Liste des Fournisseurs]).

Donc dans le classeur [Nomenclature], mon problème est pour toutes les feuilles [Liste Matériel XXX].
Mon explication précédente fait référence au classeur [Liste Matériel Aéraulique], où vous retrouverez les colonnes citées dans les explications précédentes.
Le résultat recherché doit se trouver dans la colonne G, appelée "D.T.N°".

Un exemple est réalisé dans cette colonne G à l'aide de formules qui ne me permettent pas d'automatiser mon incrémentation.

La petite partie de programme situé dans une de mes précédentes réponses se trouve également dans le Visual sous "ThisWordbook"de ce classeur.

Veuillez m'excuser pour mon manque de renseignements.
Restant à votre disposition pour compléments d'informations.
Cordialement.
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Donc en colonne [G] on incrémente de A1, A2, ....Ax avec position de départ en [G3].
Si c'est correct, la valeur en [G7] devrait-être A5 car [F6] différent de [F7] ... Oui ou Non... !
0
nicodu072 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,
C'est exacte, je ne vois pas pourquoi la formule n'a pas fonctionné.
En tout cas je vois que vous avez compris le principe ;-).
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci pour l'information.
Concerne feuille [Liste Matériel Aéraulique], essayez comme suit :
Cellule [G3] :
=SI(B3<>"";"A1";"")

Cellule [G4] : =
SI(B4<>"";SI(ET(ET(B4=B3;E4=E3);F4=F3);G3;"A"& (STXT(G3;2;2)+1));"") 
Et tire vers le bas jusqu'à la fin du tableau.

Salutations.
Le Pingou
0
nicodu072 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Cela marche parfaitement bien, je vous remercie pour cette aide précieuse, car cela va me faire gagner pas mal de temps pour mes prochains tableaux.
En fin de compte, le VBA n'est pas nécessaire !
Encore merci.
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Effectivement pas de VBA dans ce cas.
Salutations.
Le Pingou
0