[Résolu] Rechercher la 1ère ligne vide dans une zone définie

Joe[PT]

XLDnaute Junior
Bonsoir à tous,

Je sais chercher la 1ère ligne vide à partir du haut ou bas d'un document, par contre je ne sais pas chercher sur une zone définie.

En fait, je dois insérer des données dans une zone allant de A25 : A38 dans une feuille qui s'appelle "DMI"... mais la syntaxe me manque.

Bonne nuit,

Joe
 
Dernière édition:

Joe[PT]

XLDnaute Junior
Re : Rechercher la 1ère ligne vide dans une zone définie

Bonjour et désolé de m'être exprimé comme une patate :p

En fait, à l'aide d'une macro associé à un "bouton", je recopie certaines données dans un tableau qui est figé (imprimé de type Cerfa), donc pas moyen d'en modifier la taille. Il faut que je recopie ces données entres les lignes A25 et A38.
Jusque là ça va !

Le problème est de trouver le code qui vérifie la 1ère ligne vide entre A25:A38... là je ne sais pas faire. Je sais vérifier à partir du bas d'une feuille, du haut d'une feuille, mais pas dans une plage de données.

Code:
Worksheets("DMI").Range("A38").End(xlUp).Offset(1, 0).Select
J'ai déjà une erreur '1004' :(

Voilà, j'espère que j'ai été plus clair qu'hier soir. Désolé !

Bonne journée.

Joe
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Rechercher la 1ère ligne vide dans une zone définie

Bonjour à tous,

essaye ceci :
Code:
Option Explicit
Sub test()
Dim x As Range
Set x = Range("A25:A38").Find("", Range("A38"), xlValues, , 1, 1, 0)
If Not x Is Nothing Then MsgBox x.Row
End Sub

bonne journée
@+
 

Joe[PT]

XLDnaute Junior
Re : Rechercher la 1ère ligne vide dans une zone définie

Bonjour Pierrot, ça fonctionne effectivement, mais le but c'est d'écrire sur la 1ère ligne vide...
Un fichier très light de mon appli pour (enfin) être plus explicite...
Bonne journée
Joe
 

Pièces jointes

  • Copier Cells vers 1ere ligne vide autre feuille.xlsx
    194.9 KB · Affichages: 27

Pierrot93

XLDnaute Barbatruc
Re : Rechercher la 1ère ligne vide dans une zone définie

Re,

ce code était un exemple à adapter... il te suffit d'utiliser "x.row" dans ton code qui te donne le numéro de ligne, à mettre dans un "cells" ou dans un "range"... A noter ton fichier xlsx ne prend pas en compte les macros...
 

Si...

XLDnaute Barbatruc
Re : Rechercher la 1ère ligne vide dans une zone définie

salut

à tester (peu de lignes donc boucle non pénalisante au point de vue durée)
Code:
  Dim L As Byte
  L = 24
  Do: L = L + 1: Loop Until Sheets("DMI").Cells(L, 1) = ""
  If L < 39 Then Sheets("DMI").Cells(L, 1) = ...
 

Joe[PT]

XLDnaute Junior
Re : Rechercher la 1ère ligne vide dans une zone définie

Bonjour Si...
Oui, le code fonctionne et après adaptation à mes besoins, il devient :

Code:
Dim L As Byte
  L = 24
  Do: L = L + 1: Loop Until Sheets("DMI").Cells(L, 1) = ""
  
  If L < 39 Then
  Sheets("DMI").Cells(L, 1) = Sheets("Bon Réception").Range("C70").Value
  Sheets("DMI").Cells(L, 4) = Sheets("Bon Réception").Range("F70").Value
  Sheets("DMI").Cells(L, 1) = Sheets("Bon Réception").Range("C71").Value
  Sheets("DMI").Cells(L, 4) = Sheets("Bon Réception").Range("F71").Value
  End If

Le seul soucis, et l'expert que tu es a déjà repéré le problème : deux lignes au maximum doivent être reprises (tout en sachant que l'une d'elle peut être vide mais jamais les 2 vides en même temps). Avec le code, il n'y a que les 2 dernières valeurs qui sont reprises, les 2 premières sont écrasées...

En attendant, merci à tous pour votre aide... et aussi votre patience avec un pauvre autodidacte ;)

Bonne journée et bon appétit ! :)

Joe
 

Joe[PT]

XLDnaute Junior
Re : Rechercher la 1ère ligne vide dans une zone définie

Re-bonjour,

Après de la transpiration, de la réflexion, du codage = l'accouchement !

Code:
Sub DMI_Générer_Entrée()

' Recherche de la première ligne vide sur la feuille "DMI"
' entre la ligne A25 et A38 pour y copier les données provenant de "Bon Réception"

Dim L As Byte
  L = 24
  Do: L = L + 1: Loop Until Sheets("DMI").Cells(L, 1) = ""
  
  If L < 39 Then
  
    If Sheets("Bon Réception").Range("C70").Value = "" Then
    Sheets("DMI").Cells(L, 1) = Sheets("Bon Réception").Range("C71").Value
    Sheets("DMI").Cells(L, 4) = Sheets("Bon Réception").Range("F71").Value
    Else
    Sheets("DMI").Cells(L, 1) = Sheets("Bon Réception").Range("C70").Value
    Sheets("DMI").Cells(L, 4) = Sheets("Bon Réception").Range("F70").Value
    Sheets("DMI").Cells(L + 1, 1) = Sheets("Bon Réception").Range("C71").Value
    Sheets("DMI").Cells(L + 1, 4) = Sheets("Bon Réception").Range("F71").Value
    End If
  
  End If

End Sub

A priori, le résultat obtenu est correct... avec 1ère ligne rempli ou vide...

Merci à tous pour votre aide ;)

Bonne fin d'après-midi

Joe
 

Discussions similaires

Statistiques des forums

Discussions
312 169
Messages
2 085 926
Membres
103 043
dernier inscrit
nouha nj