Probleme macro

57.scheider

XLDnaute Junior
Probleme macro [Résolu]

HEllo tout le monde
J'ai realisé une macro qui recherche un nom d appareil dans l'onglet activé et qui va rechercher les reference dans un autre onglet.
La macro marche bien mais je ne sais pas comment géré ma fonctrion fonction recherche si j'ai 2 appareils. Ma macro execute une boucle lorsque je fais une 2eme recherche du meme appareil dans la meme colonne (je retombe toujour nsur le meme appareil, alors que moi je souhaiterais qu'il regarde dans les ligne suivante)
Comment faire ?

merci


Code:
Sub RemplirRefSiprtec()


'pour excuter sur chaque feuille
'    For i = 1 To Sheets.Count
'        Sheets(i).Name = Sheets(i).Activate
'    Next i



If Range("A1").Value = "Nom Armoire" Then
    LastFeuil = ActiveSheet.Name
End If

Appareilsuiv:

For i = 1 To 9
    Select Case i
    Case 1
        devicename = "6MD61"
    Case 2
        devicename = "6MD66"
    Case 3
        devicename = "7SA522"
    Case 4
        devicename = "7SD522"
    Case 5
        devicename = "7SJ61"
    Case 6
        devicename = "7SJ640"
    Case 7
        devicename = "7SJ64"
    Case 8
        devicename = "7UM62"
    Case 9
        devicename = "7UT613"
End Select
'    If i = 1 Then devicename = "6MD61"
'    If i = 2 Then devicename = "6MD66"
'    If i = 3 Then devicename = "7SA522"
'    If i = 4 Then devicename = "7SD522"
'    If i = 5 Then devicename = "7SJ61"
'    If i = 6 Then devicename = "7SJ640"
'    If i = 7 Then devicename = "7SJ64"
'    If i = 8 Then devicename = "7UM62"
'    If i = 9 Then devicename = "7UT613"
'    End If
'erreur IF

Verifmemeapp:

    Columns("B:B").Select
    
On Error GoTo IncrPrAppareilSuiv

    Selection.Find(What:=devicename, after:=ActiveCell, LookIn:=xlValues, _
                      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                      MatchCase:=False, SearchFormat:=False).Activate

'Si le fichier n'est pas trouvé on passe au prochain

        Dim Adresse As Range
        Set Adresse = ActiveCell

        Sheets("Identification_Globale").Activate
        Columns("A:A").Select
        Selection.Find(What:=devicename, after:=ActiveCell, LookIn:=xlValues, _
                      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                      MatchCase:=False, SearchFormat:=False).Activate
        Dim Adresseglob As Range
        Set Adresseglob = ActiveCell

        Sheets(LastFeuil).Activate
        Adresse.Offset(2, 0).Value = Adresseglob.Offset(0, 2).Value
        Adresse.Offset(6, 0).Value = Adresseglob.Offset(1, 2).Value
        Adresse.Offset(7, 0).Value = Adresseglob.Offset(2, 2).Value
        Adresse.Offset(8, 0).Value = Adresseglob.Offset(3, 2).Value
GoTo Verifmemeapp

IncrPrAppareilSuiv:

Next i
GoTo Appareilsuiv





End Sub
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : Probleme macro

bonjour 57.scheider, gilbert_RGI


voici un exemple de boucle de recherche avec le FindNext (comme te l'a conseillé gilbert_RGI)

Code:
Dim cellRecherche As Range, firstCellAddress As String

'lance la recherche
Set cellRecherche = Sheets("Identification_Globale").Columns("A:A").Find(What:=devicename, _
    LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)

'traite le cas où aucune cellule n'est trouvé
If cellRecherche Is Nothing Then Exit Sub

'boucle sur toutes les cellule trouvée
firstCellAddress = cellRecherche.Address
Do
    'effectue le traitement sur la cellule trouvée
    MsgBox cellRecherche.Address
    
    'passe à la cellule trouvée suivante
    Set cellRecherche = Sheets("Identification_Globale").Columns("A:A").FindNext(cellRecherche)
Loop Until cellRecherche.Address = firstCellAddress

a+
 

57.scheider

XLDnaute Junior
Re : Probleme macro

merci pour vous conseille je viens d'utiliser la fonction "find next" mais si jamais lorsqu'il n'y qu'un seul appareil mon programme tourne en boucle. car la fonction "find next" ne genere pas d'erreur si il ne trouve pas d'autres ligne il reste sur la meme alors je retraite a chaque fois le meme appareil, et il possible de generer une erreur si la fonction "findnext" retombe sur la meme ligne?

Voila mon code qui traite jusqu'a 4 appareil avec la boucle for



Code:
Sub RemplirRefSiprtec()


'pour excuter sur chaque feuille
'    For i = 1 To Sheets.Count
'        Sheets(i).Name = Sheets(i).Activate
'    Next i



If Range("A1").Value = "Nom Armoire" Then
    LastFeuil = ActiveSheet.Name
End If

Appareilsuiv:

For i = 1 To 9
    Select Case i
    Case 1
        devicename = "6MD61"
    Case 2
        devicename = "6MD66"
    Case 3
        devicename = "7SA522"
    Case 4
        devicename = "7SD522"
    Case 5
        devicename = "7SJ61"
    Case 6
        devicename = "7SJ640"
    Case 7
        devicename = "7SJ64"
    Case 8
        devicename = "7UM62"
    Case 9
        devicename = "7UT613"
    End Select
'    If i = 1 Then devicename = "6MD61"
'    If i = 2 Then devicename = "6MD66"
'    If i = 3 Then devicename = "7SA522"
'    If i = 4 Then devicename = "7SD522"
'    If i = 5 Then devicename = "7SJ61"
'    If i = 6 Then devicename = "7SJ640"
'    If i = 7 Then devicename = "7SJ64"
'    If i = 8 Then devicename = "7UM62"
'    If i = 9 Then devicename = "7UT613"
'    End If
'erreur IF

Verifmemeapp:

    Columns("B:B").Select
    
    On Error GoTo IncrPrAppareilSuiv
'Si le fichier n'est pas trouvé on passe au prochain

        Selection.Find(What:=devicename, After:=ActiveCell, LookIn:=xlValues, _
                      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                      MatchCase:=False, SearchFormat:=False).Activate
                      
        If NombreFois > 0 Then
        For j = 1 To NombreFois
        Selection.FindNext(After:=ActiveCell).Activate
        Next j
        End If


        Dim Adresse As Range
        Set Adresse = ActiveCell

        Sheets("Identification_Globale").Activate
        Columns("A:A").Select
        Selection.Find(What:=devicename, After:=ActiveCell, LookIn:=xlValues, _
                      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                      MatchCase:=False, SearchFormat:=False).Activate
        Dim Adresseglob As Range
        Set Adresseglob = ActiveCell

        Sheets(LastFeuil).Activate
        Adresse.Offset(2, 0).Value = Adresseglob.Offset(0, 2).Value
        Adresse.Offset(6, 0).Value = Adresseglob.Offset(1, 2).Value
        Adresse.Offset(7, 0).Value = Adresseglob.Offset(2, 2).Value
        Adresse.Offset(8, 0).Value = Adresseglob.Offset(3, 2).Value


        NombreFois = NombreFois + 1
        
        GoTo Verifmemeapp




IncrPrAppareilSuiv:
NombreFois = 0
Next i

GoTo Appareilsuiv





End Sub


JE vais voir en rajoutant ces lignes


On Error GoTo IncrPrAppareilSuiv
'Si le fichier n'est pas trouvé on passe au prochain
If NombreFois = 4 Then GoTo IncrPrAppareilSuiv
Selection.Find(What:=devicename, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
 
Dernière édition:

57.scheider

XLDnaute Junior
Re : Probleme macro

Voila ca marche avec les nouvelles lignes par contre j'ai remarqué que lorsque je choisis une page qui ne contient pas les premiere reference "devicename" la macro genere une erreur à la 2eme recherche si il ne trouve rien dans cette partie:


Code:
        On Error GoTo IncrPrAppareilSuiv
        Selection.Find(What:=devicename, After:=ActiveCell, LookIn:=xlValues, _
                      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                      MatchCase:=False, SearchFormat:=False).Activate


La fonction On Error goto ne peut pas fonctionner 2 fois de suite?
 

Statistiques des forums

Discussions
312 545
Messages
2 089 459
Membres
104 169
dernier inscrit
Philippe Mattia