Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fonction Gauche en VBA excel

6 réponses
Avatar
franck B
bonsoir tout le monde,

je cherche à utiliser l'equivalent de la fonction GAUCHE en VBA sous excel,
pour recuperer les 4 premieres lettres d'une case, et cela de maniere
iterative sur une tres longue colone. Cependant, je ne comprend pas le
fonctionement de la fonction, tel qu'il est exposé dans l'aide. je vous
expose donc ma problematique:

sur toute une colone (ou si quelq'un possede un moyen facile pour reperer
les lignes ou il y a les données qui m'interressent, sachant que le nombre de
lignes est inconnu) je dois comparer les 4 premiers caractères avec une
chaine prédéfinie.

j'ai donc une ebauche de code, mais qui ne fonctione pas, car je ne maitrise
pas la fonction left:

Private Sub refresh_Click()
'*****Remise à zero du tableau de suivi global des tickets*****
'*****remise à zero des filtres sur le tableau "suivi"*********

Sheets("suivi").Activate
ActiveSheet.Range("C7:R7").AutoFilter field:=1, Criteria1:="=*",
Operator:=xlAnd
Sheets("Paramètres").Cells(11, 2) = Cockpit.Code_projet.Value
i = 8
While Sheets("suivi").Cells(i, 3) <> ""
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
End If
'If Cockpit.Code_projet.Text <> Left(Sheets("suivi").Cells(i, 4), 4) Then
MsgBox "erreur : pas d'entrées associées au code projet spécifié ou resultats
multiples"
i = i + 1
Wend

End Sub

si quelqu'un voit une solution, qu'il n'hesite pas, je me creuse la tete sur
cela depuis un moment

merci d'avance

6 réponses

Avatar
Daniel
Bonsoir.
ton code :
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
End If
est correct. Tu récupères bien les 4 caractères de gauche de
"Sheets("suivi").Cells(i, 4)"
Par contre, il manque du code entre If... et End If
Cordialement.
Daniel
"franck B" a écrit dans le message de
news:
bonsoir tout le monde,

je cherche à utiliser l'equivalent de la fonction GAUCHE en VBA sous
excel,
pour recuperer les 4 premieres lettres d'une case, et cela de maniere
iterative sur une tres longue colone. Cependant, je ne comprend pas le
fonctionement de la fonction, tel qu'il est exposé dans l'aide. je vous
expose donc ma problematique:

sur toute une colone (ou si quelq'un possede un moyen facile pour reperer
les lignes ou il y a les données qui m'interressent, sachant que le nombre
de
lignes est inconnu) je dois comparer les 4 premiers caractères avec une
chaine prédéfinie.

j'ai donc une ebauche de code, mais qui ne fonctione pas, car je ne
maitrise
pas la fonction left:

Private Sub refresh_Click()
'*****Remise à zero du tableau de suivi global des tickets*****
'*****remise à zero des filtres sur le tableau "suivi"*********

Sheets("suivi").Activate
ActiveSheet.Range("C7:R7").AutoFilter field:=1, Criteria1:="=*",
Operator:=xlAnd
Sheets("Paramètres").Cells(11, 2) = Cockpit.Code_projet.Value
i = 8
While Sheets("suivi").Cells(i, 3) <> ""
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
End If
'If Cockpit.Code_projet.Text <> Left(Sheets("suivi").Cells(i, 4), 4) Then
MsgBox "erreur : pas d'entrées associées au code projet spécifié ou
resultats
multiples"
i = i + 1
Wend

End Sub

si quelqu'un voit une solution, qu'il n'hesite pas, je me creuse la tete
sur
cela depuis un moment

merci d'avance


Avatar
franck B
merci pour la confirmation concernant la fonction left.

je souhaite maintenant pouvoir arreter la boucle while au moment ou le
second if (celui avec la condition <> left(Sheets("suivi").Cells(i,4),4)
validée), un peu à la maniere d'un break ou stop que l'on peut voir dans
d'autres langages

si une telle fonction existe en vba , je suis preneur


Bonsoir.
ton code :
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
End If
est correct. Tu récupères bien les 4 caractères de gauche de
"Sheets("suivi").Cells(i, 4)"
Par contre, il manque du code entre If... et End If
Cordialement.
Daniel
"franck B" a écrit dans le message de
news:
bonsoir tout le monde,

je cherche à utiliser l'equivalent de la fonction GAUCHE en VBA sous
excel,
pour recuperer les 4 premieres lettres d'une case, et cela de maniere
iterative sur une tres longue colone. Cependant, je ne comprend pas le
fonctionement de la fonction, tel qu'il est exposé dans l'aide. je vous
expose donc ma problematique:

sur toute une colone (ou si quelq'un possede un moyen facile pour reperer
les lignes ou il y a les données qui m'interressent, sachant que le nombre
de
lignes est inconnu) je dois comparer les 4 premiers caractères avec une
chaine prédéfinie.

j'ai donc une ebauche de code, mais qui ne fonctione pas, car je ne
maitrise
pas la fonction left:

Private Sub refresh_Click()
'*****Remise à zero du tableau de suivi global des tickets*****
'*****remise à zero des filtres sur le tableau "suivi"*********

Sheets("suivi").Activate
ActiveSheet.Range("C7:R7").AutoFilter field:=1, Criteria1:="=*",
Operator:=xlAnd
Sheets("Paramètres").Cells(11, 2) = Cockpit.Code_projet.Value
i = 8
While Sheets("suivi").Cells(i, 3) <> ""
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
End If
'If Cockpit.Code_projet.Text <> Left(Sheets("suivi").Cells(i, 4), 4) Then
MsgBox "erreur : pas d'entrées associées au code projet spécifié ou
resultats
multiples"
i = i + 1
Wend

End Sub

si quelqu'un voit une solution, qu'il n'hesite pas, je me creuse la tete
sur
cela depuis un moment

merci d'avance







Avatar
Daniel
Avec While...Wend, je ne connais pas.
Par contre si tu utilises la syntaxe :
Do While ...
Exit Do
Loop
l'instruction "exit do te permets de sortir de la boucle.
Daniel
"franck B" a écrit dans le message de
news:
merci pour la confirmation concernant la fonction left.

je souhaite maintenant pouvoir arreter la boucle while au moment ou le
second if (celui avec la condition <> left(Sheets("suivi").Cells(i,4),4)
validée), un peu à la maniere d'un break ou stop que l'on peut voir dans
d'autres langages

si une telle fonction existe en vba , je suis preneur


Bonsoir.
ton code :
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
End If
est correct. Tu récupères bien les 4 caractères de gauche de
"Sheets("suivi").Cells(i, 4)"
Par contre, il manque du code entre If... et End If
Cordialement.
Daniel
"franck B" a écrit dans le message de
news:
bonsoir tout le monde,

je cherche à utiliser l'equivalent de la fonction GAUCHE en VBA sous
excel,
pour recuperer les 4 premieres lettres d'une case, et cela de maniere
iterative sur une tres longue colone. Cependant, je ne comprend pas le
fonctionement de la fonction, tel qu'il est exposé dans l'aide. je vous
expose donc ma problematique:

sur toute une colone (ou si quelq'un possede un moyen facile pour
reperer
les lignes ou il y a les données qui m'interressent, sachant que le
nombre
de
lignes est inconnu) je dois comparer les 4 premiers caractères avec une
chaine prédéfinie.

j'ai donc une ebauche de code, mais qui ne fonctione pas, car je ne
maitrise
pas la fonction left:

Private Sub refresh_Click()
'*****Remise à zero du tableau de suivi global des tickets*****
'*****remise à zero des filtres sur le tableau "suivi"*********

Sheets("suivi").Activate
ActiveSheet.Range("C7:R7").AutoFilter field:=1, Criteria1:="=*",
Operator:=xlAnd
Sheets("Paramètres").Cells(11, 2) = Cockpit.Code_projet.Value
i = 8
While Sheets("suivi").Cells(i, 3) <> ""
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
End If
'If Cockpit.Code_projet.Text <> Left(Sheets("suivi").Cells(i, 4), 4)
Then
MsgBox "erreur : pas d'entrées associées au code projet spécifié ou
resultats
multiples"
i = i + 1
Wend

End Sub

si quelqu'un voit une solution, qu'il n'hesite pas, je me creuse la
tete
sur
cela depuis un moment

merci d'avance









Avatar
Youky
Salut Franck
Pour tester cette macro tu dois créer sur ton fichier une feuille nommée
"recup"
cette feuille est vidée et se remplie de nouveau à chaque macro
Sans savoir ce que tu veux faire exactement ...à tester
Youky
Private Sub refresh_Click()
'*****Remise à zero du tableau de suivi global des tickets*****
'*****remise à zero des filtres sur le tableau "suivi"*********

Sheets("suivi").Activate
ActiveSheet.Range("C7:R7").AutoFilter field:=1, Criteria1:="=*", _
Operator:=xlAnd
Sheets("Paramètres").Cells(11, 2) = Cockpit.Code_projet.Value
Sheets("recup").Cells.ClearContents
For lig = 8 To Sheets("suivi").[C65000].End(xlUp).Row
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
ligrecup = ligrecup + 1
Sheets("recup").Rows(ligrecup).Value = Sheets("suivi").Rows(lig).Value
End If
Next
If ligrecup = "" Then
MsgBox "erreur : pas d'entrées associées au code projet spécifié" _
& " ou resultats multiples", vbInformation
End If
End Sub
"franck B" a écrit dans le message de
news:
merci pour la confirmation concernant la fonction left.

je souhaite maintenant pouvoir arreter la boucle while au moment ou le
second if (celui avec la condition <> left(Sheets("suivi").Cells(i,4),4)
validée), un peu à la maniere d'un break ou stop que l'on peut voir dans
d'autres langages

si une telle fonction existe en vba , je suis preneur


Bonsoir.
ton code :
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
End If
est correct. Tu récupères bien les 4 caractères de gauche de
"Sheets("suivi").Cells(i, 4)"
Par contre, il manque du code entre If... et End If
Cordialement.
Daniel
"franck B" a écrit dans le message de
news:
bonsoir tout le monde,

je cherche à utiliser l'equivalent de la fonction GAUCHE en VBA sous
excel,
pour recuperer les 4 premieres lettres d'une case, et cela de maniere
iterative sur une tres longue colone. Cependant, je ne comprend pas le
fonctionement de la fonction, tel qu'il est exposé dans l'aide. je vous
expose donc ma problematique:

sur toute une colone (ou si quelq'un possede un moyen facile pour
reperer
les lignes ou il y a les données qui m'interressent, sachant que le
nombre
de
lignes est inconnu) je dois comparer les 4 premiers caractères avec une
chaine prédéfinie.

j'ai donc une ebauche de code, mais qui ne fonctione pas, car je ne
maitrise
pas la fonction left:

Private Sub refresh_Click()
'*****Remise à zero du tableau de suivi global des tickets*****
'*****remise à zero des filtres sur le tableau "suivi"*********

Sheets("suivi").Activate
ActiveSheet.Range("C7:R7").AutoFilter field:=1, Criteria1:="=*",
Operator:=xlAnd
Sheets("Paramètres").Cells(11, 2) = Cockpit.Code_projet.Value
i = 8
While Sheets("suivi").Cells(i, 3) <> ""
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
End If
'If Cockpit.Code_projet.Text <> Left(Sheets("suivi").Cells(i, 4), 4)
Then
MsgBox "erreur : pas d'entrées associées au code projet spécifié ou
resultats
multiples"
i = i + 1
Wend

End Sub

si quelqu'un voit une solution, qu'il n'hesite pas, je me creuse la
tete
sur
cela depuis un moment

merci d'avance









Avatar
franck B
bonsoir,

merci pour vos réponses, je n'ai malheuresement pas la possibilité de
regarder le newsgroup la journée. en effet la boucle do...exit do...while est
la solution la plus efficace pour sortir à la maniere d'un break.

je vais donc creuser la piste du do...exit do...while et je vous informerai
de l'avancement

merci à tous


Salut Franck
Pour tester cette macro tu dois créer sur ton fichier une feuille nommée
"recup"
cette feuille est vidée et se remplie de nouveau à chaque macro
Sans savoir ce que tu veux faire exactement ...à tester
Youky
Private Sub refresh_Click()
'*****Remise à zero du tableau de suivi global des tickets*****
'*****remise à zero des filtres sur le tableau "suivi"*********

Sheets("suivi").Activate
ActiveSheet.Range("C7:R7").AutoFilter field:=1, Criteria1:="=*", _
Operator:=xlAnd
Sheets("Paramètres").Cells(11, 2) = Cockpit.Code_projet.Value
Sheets("recup").Cells.ClearContents
For lig = 8 To Sheets("suivi").[C65000].End(xlUp).Row
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
ligrecup = ligrecup + 1
Sheets("recup").Rows(ligrecup).Value = Sheets("suivi").Rows(lig).Value
End If
Next
If ligrecup = "" Then
MsgBox "erreur : pas d'entrées associées au code projet spécifié" _
& " ou resultats multiples", vbInformation
End If
End Sub
"franck B" a écrit dans le message de
news:
merci pour la confirmation concernant la fonction left.

je souhaite maintenant pouvoir arreter la boucle while au moment ou le
second if (celui avec la condition <> left(Sheets("suivi").Cells(i,4),4)
validée), un peu à la maniere d'un break ou stop que l'on peut voir dans
d'autres langages

si une telle fonction existe en vba , je suis preneur


Bonsoir.
ton code :
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
End If
est correct. Tu récupères bien les 4 caractères de gauche de
"Sheets("suivi").Cells(i, 4)"
Par contre, il manque du code entre If... et End If
Cordialement.
Daniel
"franck B" a écrit dans le message de
news:
bonsoir tout le monde,

je cherche à utiliser l'equivalent de la fonction GAUCHE en VBA sous
excel,
pour recuperer les 4 premieres lettres d'une case, et cela de maniere
iterative sur une tres longue colone. Cependant, je ne comprend pas le
fonctionement de la fonction, tel qu'il est exposé dans l'aide. je vous
expose donc ma problematique:

sur toute une colone (ou si quelq'un possede un moyen facile pour
reperer
les lignes ou il y a les données qui m'interressent, sachant que le
nombre
de
lignes est inconnu) je dois comparer les 4 premiers caractères avec une
chaine prédéfinie.

j'ai donc une ebauche de code, mais qui ne fonctione pas, car je ne
maitrise
pas la fonction left:

Private Sub refresh_Click()
'*****Remise à zero du tableau de suivi global des tickets*****
'*****remise à zero des filtres sur le tableau "suivi"*********

Sheets("suivi").Activate
ActiveSheet.Range("C7:R7").AutoFilter field:=1, Criteria1:="=*",
Operator:=xlAnd
Sheets("Paramètres").Cells(11, 2) = Cockpit.Code_projet.Value
i = 8
While Sheets("suivi").Cells(i, 3) <> ""
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
End If
'If Cockpit.Code_projet.Text <> Left(Sheets("suivi").Cells(i, 4), 4)
Then
MsgBox "erreur : pas d'entrées associées au code projet spécifié ou
resultats
multiples"
i = i + 1
Wend

End Sub

si quelqu'un voit une solution, qu'il n'hesite pas, je me creuse la
tete
sur
cela depuis un moment

merci d'avance














Avatar
Youky
Bonsoir,
Dans la macro proposé sur mon message précédent je n'ai pas employé de Do
Loop ni While Wend
ni Do While mais tout simplement le bon vieux For Next
Je commence à 8 et finit à la derniere ligne non vide de la colonne C
Je t'invite à bien relire mon précédent message.
La macro proposée copy les lignes dont les 4ere lettres sont ok en feuille
"recup"
Cette feuille "recup" doit exister ou être créée sur le fichier.
Youky
"franck B" a écrit dans le message de
news:
bonsoir,

merci pour vos réponses, je n'ai malheuresement pas la possibilité de
regarder le newsgroup la journée. en effet la boucle do...exit do...while
est
la solution la plus efficace pour sortir à la maniere d'un break.

je vais donc creuser la piste du do...exit do...while et je vous
informerai
de l'avancement

merci à tous


Salut Franck
Pour tester cette macro tu dois créer sur ton fichier une feuille nommée
"recup"
cette feuille est vidée et se remplie de nouveau à chaque macro
Sans savoir ce que tu veux faire exactement ...à tester
Youky
Private Sub refresh_Click()
'*****Remise à zero du tableau de suivi global des tickets*****
'*****remise à zero des filtres sur le tableau "suivi"*********

Sheets("suivi").Activate
ActiveSheet.Range("C7:R7").AutoFilter field:=1, Criteria1:="=*", _
Operator:=xlAnd
Sheets("Paramètres").Cells(11, 2) = Cockpit.Code_projet.Value
Sheets("recup").Cells.ClearContents
For lig = 8 To Sheets("suivi").[C65000].End(xlUp).Row
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4) Then
ligrecup = ligrecup + 1
Sheets("recup").Rows(ligrecup).Value = Sheets("suivi").Rows(lig).Value
End If
Next
If ligrecup = "" Then
MsgBox "erreur : pas d'entrées associées au code projet spécifié" _
& " ou resultats multiples", vbInformation
End If
End Sub
"franck B" a écrit dans le message de
news:
merci pour la confirmation concernant la fonction left.

je souhaite maintenant pouvoir arreter la boucle while au moment ou le
second if (celui avec la condition <>
left(Sheets("suivi").Cells(i,4),4)
validée), un peu à la maniere d'un break ou stop que l'on peut voir
dans
d'autres langages

si une telle fonction existe en vba , je suis preneur


Bonsoir.
ton code :
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4)
Then
End If
est correct. Tu récupères bien les 4 caractères de gauche de
"Sheets("suivi").Cells(i, 4)"
Par contre, il manque du code entre If... et End If
Cordialement.
Daniel
"franck B" a écrit dans le message
de
news:
bonsoir tout le monde,

je cherche à utiliser l'equivalent de la fonction GAUCHE en VBA sous
excel,
pour recuperer les 4 premieres lettres d'une case, et cela de
maniere
iterative sur une tres longue colone. Cependant, je ne comprend pas
le
fonctionement de la fonction, tel qu'il est exposé dans l'aide. je
vous
expose donc ma problematique:

sur toute une colone (ou si quelq'un possede un moyen facile pour
reperer
les lignes ou il y a les données qui m'interressent, sachant que le
nombre
de
lignes est inconnu) je dois comparer les 4 premiers caractères avec
une
chaine prédéfinie.

j'ai donc une ebauche de code, mais qui ne fonctione pas, car je ne
maitrise
pas la fonction left:

Private Sub refresh_Click()
'*****Remise à zero du tableau de suivi global des tickets*****
'*****remise à zero des filtres sur le tableau "suivi"*********

Sheets("suivi").Activate
ActiveSheet.Range("C7:R7").AutoFilter field:=1, Criteria1:="=*",
Operator:=xlAnd
Sheets("Paramètres").Cells(11, 2) = Cockpit.Code_projet.Value
i = 8
While Sheets("suivi").Cells(i, 3) <> ""
If Cockpit.Code_projet.Text = Left(Sheets("suivi").Cells(i, 4), 4)
Then
End If
'If Cockpit.Code_projet.Text <> Left(Sheets("suivi").Cells(i, 4), 4)
Then
MsgBox "erreur : pas d'entrées associées au code projet spécifié ou
resultats
multiples"
i = i + 1
Wend

End Sub

si quelqu'un voit une solution, qu'il n'hesite pas, je me creuse la
tete
sur
cela depuis un moment

merci d'avance