XL 2013 erreur d’exécution 91 "variable de bloc With non définie"

Zerife

XLDnaute Nouveau
Bonjour,

J'ai un blocage sur une macro, et je ne comprends pas pourquoi ça bloque. J'ai besoin d'aide.

La macro bloque sur la ligne :
DerLignesh = rngTrouve.Row

erreur d’exécution 91 "variable de bloc With non définie"

--------------------------------------------------------------------------------------------------------------
Sub Concatene_EVImport()
Dim sarray
Dim sh As Worksheet, shimp As Worksheet
Dim DerLigne As Long, DerLignesh As Long, rngTrouve As Range

Application.DisplayAlerts = False
Application.ScreenUpdating = False

Sheets.Add.Name = "ImportDV"
Set shimp = Sheets("ImportDV")
sarray = Array("ImportDV", "Base", "REF", "Modele Horaire", "Modele Forfait jour", "Liste des onglets")

For Each sh In ActiveWorkbook.Worksheets
If IsError(Application.Match(sh.Name, sarray, 0)) Then
With sh

DerLigne = shimp.Cells(.Rows.Count, "A").End(xlUp).Row + 1
Set rngTrouve = .Columns("AZ:AZ").Find("*", After:=.Range("AZ1"), searchdirection:=xlPrevious, LookIn:=xlValues)
DerLignesh = rngTrouve.Row
.Range("AZ9:BC" & DerLignesh).Copy
shimp.Cells(DerLigne, 1).PasteSpecial (xlPasteValues)
shimp.Cells(DerLigne, 1).PasteSpecial (xlPasteFormats)
Application.CutCopyMode = False
End With
End If
Next sh

With shimp.Range("A1:D1")
.HorizontalAlignment = xlCenter
.MergeCells = False
.Merge
.Value = "synthese salarié horaire"
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

---------------------------------------------------------------
Merci pour votre aide,
Cdl
Zérife
 

xUpsilon

XLDnaute Accro
Re,

Bon j'ai eu quelques soucis pour sélectionner la dernière ligne comme tu as des formules partout, du coup je pouvais pas passer par End(xlDown) mais voici une solution.

Bonne continuation
 

Pièces jointes

  • test Modele SUD (1).xlsm
    484.8 KB · Affichages: 3

Zerife

XLDnaute Nouveau
Bonjour,

Pour ma connaissance perso, pourriez-vous m'éclairer sur la signification du 5 et du 9 dans le code :

Sub Concatene_EVImport()

'sert à concatenner les champs rose de la colonne AZ à BC de tous les onglets nominatifs afin d'obtenir une liste à importer

Worksheets.Add After:=Sheets(Worksheets.Count)


Sheets(Worksheets.Count).Name = "ImportDV" 'crée un gonlet qui s'appelle Import EV

For i = 5 To Worksheets.Count - 1
n = 9
DerLig = Worksheets("ImportDV").Range("A" & Rows.Count).End(xlUp).Row 'définit cellule A de l'onglet Import DV les données dynamiques
While Worksheets(i).Range("AZ" & n) <> "" 'jusqu'à la derniere donnee dynamique "vide"
n = n + 1 'en passant par la donnée dynamique qui suit ensuite
Wend
Worksheets(i).Range("AZ9:BC" & n).Copy 'copie les données contenues dans chacun des onglets positionnées en colonne AZ à BC
Worksheets("ImportDV").Range("A" & DerLig + 1).PasteSpecial xlPasteValues 'colle en colonne A en dessus de la derniere ligne excécutée
Next i
End Sub

Merci beaucoup,
 

xUpsilon

XLDnaute Accro
Bonjour,

i est l'incrément qui permet de passer d'une feuille à une autre. Ainsi, le faire commencer à 5 et le faire fonctionner jusqu'à Worksheets.Count -1, ça veut dire qu'on boucle sur toutes les feuilles de la 5ème feuille jusqu'à l'avant dernière feuille.
n permet de trouver la dernière donnée non vide dans la colonne AZ. On boucle tant que la donnée est non vide, et dès qu'elle est vide on arrete d'incrémenter n. Comme ça à la fin n renvoie la dernière ligne non vide.

Bonne continuation
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 009
dernier inscrit
dede972