Boucle do while

ouali

XLDnaute Junior
Bonjour le forum,
J'essaie d'utiliser une boucle do while.

Je possède dans un feuillet une base de donnée avec une colonne comprenant des noms et la 2ème colonne comprend les mnémonique de ces noms

Lorsque je me trouve sur mon feuillet saisie je vais rentrer moi-même un des noms et j'aimerais qu'il aille dans mon feuillet de librairie (champs) et des qu'il trouve le nom que j'ai rentré, il me donne le mnemonique

Mais apparemment ma macro ne rentre pas dans ma boucle comme si la condition était déjà remplie ce qui n'est pas le cas.
Voila mon code si qqn peut m'aider

Sub mnemonique_champs()
Dim champs As String ' Correspond au champ
Dim nligne As Integer ' numéro de la ligne
Dim lignesource As Integer ' Numéro de la ligne de la librairie des champs
Dim mnemo_champs As String ' cellule comprenant le mnemonique du champ dans la librairie




nligne = 4 ' Initialisation du numéro de la ligne (1ère entrée) où l'on rentre les données (saisie)
lignesource = 1 '


champs = Sheets("Saisie").Range("I" & nligne)

Do While champs = Sheets("champs").Range("B" & lignesource)
lignesource = lignesource + 1
Loop

Sheets("Saisie").Range("C" & nligne) = Sheets("champs").Range("A" & lignesource)

End Sub

Et comment faire pour mettre le code autrement que dans le texte ;)

Merci d'avance
 

ballmaster

XLDnaute Occasionnel
Re : Boucle do while

Bonjour,

Pourquoi ne pas passer par une fonction du type RECHERCHEV.

la tu veux que ton code mnémonique apparaisse automatiquement tu tapes la formule suivante :

= recherchev(a1;plage;2;faux)

a1 cellule ou tu tapes ton nom
plage -> l'ensemble de ta base de données
2 -> chiffre à adapter qui correspond au n° de colonne de ta base de donnée pour laquelle tu veux renvoyer la valeur
 

ouali

XLDnaute Junior
Re : Boucle do while

J'ai tout d'abord essayé avec cette fonction mais elle n'est pas idéale. En effet, du moment que ce n'est pas par ordre alphabétique ca ne marche plus très bien et les bases de donnée peuvent être modifiés a tout moment et je n'ai pas envie de devoir gérer l'ordre alphabétique.

Je n'arrive pas à joindre mon fichier, même zipper il fait 77 Ko
Je vais encore essayer

Merci d'avance

ps.: Je pense que je dois aussi pouvoir utiliser une boucle for ms je sais pas trop comment l'écrire
 

ouali

XLDnaute Junior
Re : Boucle do while

Re bonjour,

Voilà je le mets en fichier joint ! Le code se trouve dans le module2

Merci encore ;)
 

Pièces jointes

  • SaisieM1_envoie.zip
    47.2 KB · Affichages: 45
  • SaisieM1_envoie.zip
    47.2 KB · Affichages: 48
  • SaisieM1_envoie.zip
    47.2 KB · Affichages: 45

ouali

XLDnaute Junior
Re : Boucle do while

Bonjour,

Merci Bond, James Bond ;)

eh oui en effet c'est Neuch tu es de la région ?

Merci pour ton aide ca l'air de bien fonctionner plus de problème d'ordre alphabétique.
J'ai juste "inverser la formule" en effet j'aimerais rentrer le nom et qu'il me mette le mnémonique.

Par contre est-ce que cette formule peut être modifié pour un nombre indéfini de lignes dans ma librairie de champs ? De plus dans mon fichier saisie, j'aurais des lignes vide et il faut qu'elle le reste sans avoir de formules. Je peux gérer ca en macro ms directement sur excel je ne sais pas comment faire ? Je me demande donc si j'ai pas meilleur temps de la faire avec ma macro mais as-tu quand même une idée du pourquoi ma boucle ne marche pas ? Ça m'intrigue
 

Pièces jointes

  • TestOuali.zip
    29.5 KB · Affichages: 35
  • TestOuali.zip
    29.5 KB · Affichages: 36
  • TestOuali.zip
    29.5 KB · Affichages: 32

pierrejean

XLDnaute Barbatruc
Re : Boucle do while

Re

Pour que ta boucle fonctionne
VB:
.....
champs = Sheets("Saisie").Range("I" & nligne)
librairie = Sheets("champs").Range("B" & lignesource)
Do While librairie <> champs
lignesource = lignesource + 1
librairie = Sheets("champs").Range("B" & lignesource)
Loop
.....
 

ouali

XLDnaute Junior
Re : Boucle do while

Merci pierrejean c'est tout à fait ca !!!
Je me suis rendu compte que j'avais inversé la condition !!
J'ai un autre soucis maintenant j'ai crée une boite de dialogue afin de rentrer les données par cette dernière.

Or je ne sais pas comment faire pour rentrer plusieurs lignes a la suite et qu'a chaque fois il me mette les données dans la ligne vide juste en dessous
En gros je choisis le champs et le libellé qd je clique sur valider il va entrer les données sur la 1ère ligne et ensuite je rentre directement une autre valeur pour le champs et libellé et qu'il me mette ces données dans la ligne en dessous et ainsi de suite jusqu'à ce que je clique sur annuler ou que je mette un autre bouton "terminer"

J'ai essayé de mettre un bout de code qui ne marche pas dans le code de l'userform2 ( sais pas si c'est mieux de l'écrire ailleurs )

Merci d'avance pour votre aide