Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

fonction while (tantque)

  • Initiateur de la discussion Initiateur de la discussion guevain
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

guevain

Guest
bonjour a tous ,

malgré maintes et maintes recherches , je n'arrive toujours pas a comprendre une macro qui utilise "while".

en effet , lorsque je lance la macro , cette derniere se lance, et passe directement a la fin.

je recupere le fichier et le mets a dispo des que possible.

merci a tous et a bientot
 
Re : fonction while (tantque)

bonjour

exemple avec une pause !
P = 5 ' secondes
T! = Timer: While Abs(Timer -T!) <= P: Wend
tant que la soustraction de timer - T!(timer avant boucle) ne sera > 5 secondes ça bouclera

mais pour cela il faut bien entendu avoir initialisée la variable T! avant la boucle !
 
Dernière édition:
Re : fonction while (tantque)

re bonjour ,

je mets le fichier en exemple mais se que je souhaiterais faire c'est rechercher une donnée (situé sur un autre onglet) dans une liste et recuperer les infos qui contiennent cette donnée (c'est pas tres clair,mais c'est pas facile non plus)
en fait cela donnerai :si dans l'onglet MAJ , colonne G , on trouve une ligne qui contient la valeur qui se trouve dans l'onglet prodHUB , cellule C8 , alors on envoie la valeur trouvée en A2 de l'onglet MAJ.puis si il trouve une autre ligne il l'envoie en A3 et ainsi de suite.

j'espere mettre exprimé assez clairement , car pour avoir parcouru le forum et d'autres , je me suis rendu compte que se qui parait simple a penser ne l'est pas forcement a s'exprimé.
 

Pièces jointes

Re : fonction while (tantque)

bonjour a tous ,

personne ne peut m'aider ?

afin de comprendre cette fonction , je voudrais la traduction en francais d'une macro avec fonction "while"

merci a tous
 
Re : fonction while (tantque)

Bonjour,

Code:
Sub ajout_sup_de_ligne()
    ligne_modif = 2
    Sheets("prodHUB").Select
    While Cells(ligne_modif, 2).Value <> ""
        <Série d’actions>
    Wend
End Sub

Je traduis ton code : dans la feuille "prodHUB", tant que la cellule examinée n’est pas vide, j’effectue la série d’actions. La variable ligne_modif étant égale à 2, la première cellule examinée est Cells(2,2), soit B2.
Cette première cellule examinée étant vide, on sort immédiatement de la boucle.

A+
 
Re : fonction while (tantque)

bonjour Frangy,

je comprends mieux pourquoi la macro passe directement a la fin quand je la lance .

en fait il faudrait que ma variable soit ligne_modif egale a la cellule C8 (comment l'appeller ???)

d'apres toi , la serie d'action est elle bonne ?


merci d'avance
 
Re : fonction while (tantque)

D'après ce que je crois comprendre de ton traitement, il me semble qu'un simple filtre doit suffire.
Tu peux tester le filtrage avec un critère "Contient" et voir le résultat avec l'enregistreur de macro.

A+
 
Re : fonction while (tantque)

merci beaucoup

c'est exactement ce que je voulais faire.

de plus , les explications intergrer en commentaire dans la macro , vont me permettre de comprendre et d'enrichir mes faibles competences.
 
Re : fonction while (tantque)

re bonjour frangy

je reviens avec le meme fichier , car j'ai voulu ajouter un critere : copier le commentaire de l'onglet prodHUB, dans la colonne commentaire de l'onglet MAJ , tant que la valeur de la cellule 'Ax' contient la valeur de la cellule 'Bx'.

malgré les commentaire laisser dans ta macro,je n'est pas reussi a decripter a quoi fait référence les 'WSx'.

par avance , merci de ton aide

cordialement
 
Re : fonction while (tantque)

Bonjour,
copier le commentaire de l'onglet prodHUB, dans la colonne commentaire de l'onglet MAJ , tant que la valeur de la cellule 'Ax' contient la valeur de la cellule 'Bx'.
Je ne comprends pas : Ax de quelle feuille ? Bx de quelle feuille ?
S’il s’agit de la feuille prodHUB, les colonnes A et B sont fusionnées.
S’il s’agit de la feuille MAJ, la colonne A contient des codes et la colonne B des dates ????

je n'ai pas réussi a décrypter a quoi fait référence les 'WSx'
WsS fait référence à la feuille "prodHUB",
WsC fait référence à la feuille "MAJ".
Ecrire WsS.Range("C8") revient à écrire Worksheets("prodHUB").Range("C8")

A+
 
Re : fonction while (tantque)

re frangy

en fait je me suis planté , Ax correspont a la cellule C8 de prodHUB et Bx correspond a la cellule E2 de MAJ.

en fait ce que je veux faire c'est recupérer la valeur de M8 dans prodHUB et la coller dans la cellule E2 de MAJ , et cela tant que les cellules qui suivent contiennent la valeur de la celulle C8 de prodHUB.

merci pour le Ws , si je comprends bien il faudrair que j'écrive :
WsS.Range("C8:C" & DerLigneS)
WsC.Range("M8:M" & WsC.Range("M8").End(xlDown).Row)
For Each Cel In PlageS
Set C = PlageC.Find(Cel, LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
WsC.Range("E" & WsC.Range("E" & WsC.Rows.Count).End(xlUp)(2).Row) = C.Value
Set C = PlageC.FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
Next Cel
End If

a la suite de ta macro entre end if et le screenupdating

merci du temps que tu me consacre
 
Re : fonction while (tantque)

Bonjour,

J’ai complété la procédure avec la méthode FIND afin de rajouter le commentaire associé.
Ca se résume à la ligne de code WsC.Range("E" & LigneAjout) = Cel.Offset(0, 9)

Code:
Sub ajout_sup_de_ligne1()
Dim WsS As Worksheet, WsC As Worksheet
Dim DerLigne As Long
Dim PlageS As Range, PlageC As Range, Cel As Range, C As Range
    Set WsS = Worksheets("prodHUB")
    Set WsC = Worksheets("MAJ")
    'On recherche la dernière ligne renseignée dans la colonne C de "prodHUB"
    DerLigneS = WsS.Range("C" & WsS.Rows.Count).End(xlUp).Row
    'Si la colonne est renseignée
    If DerLigneS >= 8 Then
        Application.ScreenUpdating = False
        'On définit la plage des données à rechercher (Plage source dans "prodHUB")
        Set PlageS = WsS.Range("C8:C" & DerLigneS)
        'On définit la plage de recherche (Plage Cible dans "MAJ")
        Set PlageC = WsC.Range("G2:G" & WsC.Range("G2").End(xlDown).Row)
        'On effectue la recherche
        For Each Cel In PlageS
            Set C = PlageC.Find(Cel, LookIn:=xlValues)
            If Not C Is Nothing Then
                firstAddress = C.Address
                Do
                    'On recherche la ligne où doit se faire l'ajout
                    LigneAjout = WsC.Range("A" & WsC.Rows.Count).End(xlUp)(2).Row
                    'On effectue la copie des données dans la colonne A de "MAJ"
                    WsC.Range("A" & LigneAjout) = C.Value
                    'On copie le commentaire de la colonne M de "prodHUB" dans dans la colonne E de "MAJ"
                    WsC.Range("E" & LigneAjout) = Cel.Offset(0, 9)
                    Set C = PlageC.FindNext(C)
                Loop While Not C Is Nothing And C.Address <> firstAddress
            End If
        Next Cel
    End If
    Application.ScreenUpdating = False
    WsC.Select
    'On libère la mémoire
    Set C = Nothing: Set PlageC = Nothing: Set PlageS = Nothing: Set WsC = Nothing: Set WsS = Nothing
End Sub
A+
 
Re : fonction while (tantque)

merci beaucoup
cela fonctionne a merveille
en revanche ,si je modifie mon tableau prodHUB , et que je modifie les données de la macro ( derligne et plageS); la recuperation du commentaire ne fonctionne plus.

j'essaie de comprendre a quel endroit on indique a la macro de recuperer l'info (commentaire dans prodHUB) , afin de modifier.

merci d'éclairer ma lanterne
 
Re : fonction while (tantque)

j'essaie de comprendre a quel endroit on indique a la macro de récupérer l'info (commentaire dans prodHUB) , afin de modifier.
Comme je te le disais précédemment, cela se résume à la ligne de code
Code:
WsC.Range("E" & LigneAjout) = Cel.Offset(0, 9)
WsC.Range("E" & LigneAjout) correspond à la cellule de la feuille MAJ dans laquelle doit être inscrit le commentaire.
Cel.Offset(0, 9) correspond à la cellule de la feuille prodHUB, qui contient le commentaire à copier.
Il s’agit de la cellule décalée de 9 colonnes par rapport à la cellule qui contient le code à barre.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Contrôle sur date
Réponses
8
Affichages
409
Réponses
4
Affichages
309
Réponses
7
Affichages
468
Réponses
66
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…